Objective-C中的@property用法

聲明property的語法爲:多線程

@property (參數1,參數2) 類型 名字;

如:性能

@property(nonatomic,retain) UIWindow *window;

其中參數主要分爲三類:atom

讀寫屬性: (readwrite/readonly)

setter語意:(assign/retain/copy)

原子性: (atomicity/nonatomic)

各參數意義以下:.net

readwrite: 產生settergetter方法線程

readonly: 只產生簡單的getter,沒有setter。指針

assign: 默認類型,setter方法直接賦值,而不進行retain操做code

retain: setter方法對參數進行release舊值,再retain新值。對象

copy: setter方法進行Copy操做,與retain同樣blog

nonatomic: 禁止多線程,變量保護,提升性能內存

@property的參數:

(1)set 方法內存管理相關的參數

(a)retain:release 舊值,retain 新值(適用於 OC對象類型
(b)assign:直接賦值(默認,適用於非OC對象類型), 經常使用在 BOOL 、int 等基本數據類型。
(c)copy:release 舊值,copy新值, 經常使用在 NSString對象

(2)是否要生成 set 方法

(a)readwriter:同時生成set和get方法的聲明和實現
(b)readonly:只生成 get的聲明和實現

(3)多線程管理

(a)nonatomic:性能高(通常都是使用這個)
(b)atomic:性能低(默認)

(4)set 和 get 方法的名稱

(a)setter:決定了 set 方法的名稱,必定要加個冒號「:「
(b)getter:決定了 get 方法的名稱,不要加冒號

(5)strong 和 weak

(a) strong: 用於通常對象
(b) weak: 用於UI控件

id萬能指針

Person *p = [Person new];

至關於:

id p = [Person new];

注意 id 和 p 之間不要再加了,id 中默認就帶了。

詳情請參考博文Objective-C中的@property和@synthesize用法

相關文章
相關標籤/搜索