天天看點

OC學習筆記五 記憶體管理(property 參數)

@property不帶參數會預設生成标準的setter getter方法,不會幫助管理記憶體。

加上了參數才會幫忙管理記憶體。

基本資料類型(int float....)不需要寫參數,或者也可以加上(assign)參數 (寫不寫實際沒什麼差別);如果是對象的話一般加上retain

OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)

如果不寫的話,預設就是automic

@property int no;

automic就代表給方法進行加鎖,保證線程安全。

noautomic代表方法不需要考慮線程安全問題。

OC學習筆記五 記憶體管理(property 參數)

iPhone裡開發一般是用的是nonautomic 

下圖中,nonautomic表示不需要加鎖,

retain表示book這個方法的setter和getter方法不要加鎖,不用考慮線程安全問題,book的setter方法需要管理記憶體。 

OC學習筆記五 記憶體管理(property 參數)

下圖表示:no2的getter 和 setter方法不需要加鎖,不需要考慮線程安全問題;而且它的setter方法是直接指派的。 

OC學習筆記五 記憶體管理(property 參數)

如果是BOOL類型,一般不會這樣寫:

@property (nonatomic) BOOL  rich

這樣寫:

@property (nonatomic, getter=isRich) BOOL rich;

OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)
OC學習筆記五 記憶體管理(property 參數)

繼續閱讀