@property預編譯指令的作用是自動聲明屬性的setter和getter方法。
@synthesize創建該屬性的訪問器
對象可以通過"."或調用訪問器訪問屬性
實例變量有進可以與屬性並不同名,與java屬性一樣。屬性名稱只由屬性@property定義聲明
@property屬性聲明格式:
@property(參數1,參數2)類型 名字;
如:@property(nonatomic,retain)UIWindow *window;
其中參數主要分爲三類;
讀寫屬性:(readwrite/readonly)
setter語意:(assign/retain/copy)
原子性:(atomicity/nonatomic)
各參數意義如下:
readwrite 產生setter\getter方法
readonly:只產生簡單的getter,沒有setter
assign:默認類型,setter方法直接賦值,而不進行retain操作
retain setter方法對參數進行release舊值,再retain新值
copy setter方法進行Copy操作,與retain一樣
nonatomic 禁止多線程,變量保護,提高性能