@property不帶參數會預設生成标準的setter getter方法,不會幫助管理記憶體。
加上了參數才會幫忙管理記憶體。
基本資料類型(int float....)不需要寫參數,或者也可以加上(assign)參數 (寫不寫實際沒什麼差別);如果是對象的話一般加上retain
如果不寫的話,預設就是automic
@property int no;
automic就代表給方法進行加鎖,保證線程安全。
noautomic代表方法不需要考慮線程安全問題。
iPhone裡開發一般是用的是nonautomic
下圖中,nonautomic表示不需要加鎖,
retain表示book這個方法的setter和getter方法不要加鎖,不用考慮線程安全問題,book的setter方法需要管理記憶體。
下圖表示:no2的getter 和 setter方法不需要加鎖,不需要考慮線程安全問題;而且它的setter方法是直接指派的。
如果是BOOL類型,一般不會這樣寫:
@property (nonatomic) BOOL rich
這樣寫:
@property (nonatomic, getter=isRich) BOOL rich;