iT邦幫忙

0

iOS APP 開發 OC 第十九天,@property

  • 分享至 

  • xImage
  •  
tags: OC 30 day

@property參數

@property可以帶參數的
@proporty(參數1,參數2,參數3...)數據類型 名稱;

@property 的四組參數

與多線程相關的兩個參數

atomic,nonatomic

與生成setter方法的實現相關參數

assign,retain

與生成只讀,讀寫相關的參數

readonly,readwrite

是與生成的getter setter方法名字相關的參數

getter setter

多線程相關的參數

atomic:默認值。如果寫atomic,這個時候生成的setter方法的代碼就會被加上一把現成安全鎖。特點:安全,效率較差。
nonatomic:如果寫nonatomic 這個時候生成的setter方法的代碼就不會加縣城安全鎖。特點:不安全,效率高。

建議:要效率,最好使用nonatomic。

setter方法實現相關參數

assign:默認值,生成setter方法的實現就是直接賦值。
retain:生成的setter方法的實現就是標準的MRC內存管理代碼。也就是先判斷新舊對象是否為同一個對象。如果不是release舊的 retain 新的。

當屬性的類型是OC對象類型的時候,那麼就使用retain。
當屬性的類型是非OC對象的時候,使用assign。

retain參數,只是生成標準的setter方法為標準的MRC內存管理代碼,不會自動地在dealloc中生成release的代碼。所以,我們還要手動的在dealloc中release。

與生成只讀 讀寫封裝

readwriter:默認值,代表同時生成getter setter
readonly:只會生成getter 不會生成setter

生成getter,setter相關的參數。

默認情況下,@property 生成的getter setter 方法都是最標準的名字。
其實我們可以透過參數來指定@property 生成方法的名字。

getter = getter方法名字 用來指定@property 生成的getter方法的名字。
setter = setter方法名字,用來指定@property生成setter方法的名字,注意setter方法是帶參數的,所以要加一個冒號。

修改生成getter setter 方法名字,因為默認下生成的方法名字已經是最標準的名字了。所以一般情況下不要去改。

  1. 無論什麼情況下都不要改setter方法的名字。因為默認情況下生成的名字已經是最標準的了。
  2. 什麼時候修改getter方法的名字。當屬性的類型是一個BOOL類型的時候,就修改這個getter的名字以is開頭,提高代碼的閱讀性。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言