@property各參數(shù)的作用以及用法

1:@property的作用

. 自動(dòng)生成私有屬性.

. 自動(dòng)生成私有屬性的getter setter方法的聲明.

. 自動(dòng)生成私有屬性的getter setter方法的實(shí)現(xiàn).

生成的setter實(shí)現(xiàn): 都是直接賦值.

. @property參數(shù).

. 可以帶參數(shù).

. @property(參數(shù)1,參數(shù)2,參數(shù)3….) 數(shù)據(jù)類型 名稱;

. @property參數(shù)主要分為如下四類.

. 與多線程相關(guān)的.

atomic nonatomic

. 與生成的setter方法實(shí)現(xiàn)相關(guān)的

assign retain

. 生成的getter setter 是可讀寫的還是只讀的封裝.

readwrite readonly

. 修改生成的getter setter方法的名稱

setter getter

. 與多線程相關(guān)的參數(shù)

默認(rèn)值是atomic 如果不寫這兩個(gè)參數(shù)中的1個(gè) 那么默認(rèn)就是atomic。

atomic: 生成的set方法的實(shí)現(xiàn)就是加了線程安全鎖的.

安全性高. 但是效率相對(duì)較低.

nonatomic:生成的set方法的實(shí)現(xiàn)沒有加線程安全鎖.

安全性低 但是效率相對(duì)較高

推薦使用nonatomic 因?yàn)檫@樣效率更高一些.

. 與生成的setter方法的實(shí)現(xiàn)相關(guān)的參數(shù)

默認(rèn)值是assign

assign: 生成的setter方法的實(shí)現(xiàn)就是直接賦值.

retain: 生成的setter方法的實(shí)現(xiàn)就是標(biāo)準(zhǔn)的MRC內(nèi)存管理代碼.

屬性的類型是OC對(duì)象的時(shí)候 就使用retain

屬性的類型是非OC對(duì)象的時(shí)候 就使用assign

生成的是只讀封裝還是讀寫封裝

默認(rèn)值是: readwrite

readwrite: 同時(shí)生成屬性的getter和setter

readonly: 只生成getter 而不生成setter

修改生成的getter setter方法的名稱

默認(rèn)情況下,@propert生成的getter setter方法的名稱都是按照規(guī)范來(lái)生成的.

使用參數(shù)getter或者setter可以修改生成的getter方法和setter方法的名稱.

雖然可以使用參數(shù)來(lái)更改生成的getter、setter方法的名稱但是沒事別亂改.

因?yàn)檫@樣的話 方法名就不遵守規(guī)范了.

注意的問題

. 如果我們使用getter setter參數(shù)修改了生成的getter setter方法名稱.

點(diǎn)語(yǔ)法仍然可以正常使用.

會(huì)自動(dòng)的將點(diǎn)語(yǔ)法轉(zhuǎn)換為調(diào)用修改名稱以后的方法.

. setter方法的名稱永遠(yuǎn)都不要改.

. 當(dāng)屬性的類型是1個(gè)BOOL類類型的時(shí)候.

為了讓我們的代碼語(yǔ)義看起來(lái)更符合人類的思維.

所以我們修改這個(gè)屬性的getter名稱 以isXXX開頭.

. 使用大注意.

retain只是生成的set方法是標(biāo)準(zhǔn)的MRC內(nèi)存管理代碼.

不會(huì)在dealloc中生成release

所以,我們還要手動(dòng)的在dealloc中寫上release的代碼.

. 參數(shù)使用總結(jié)

. 同1組的參數(shù)只能使用其中的1個(gè).否則就會(huì)沖突.

但是getter和setter可以同時(shí)使用 這個(gè)不沖突.

. 使用建議.

. 無(wú)論如何使用nonatomic

. 如果屬性的類型是OC對(duì)象類型使用retain 如果屬性類型是非OC類型使用assign

. 如果希望可讀可寫 就使用readwrite 如果希望只讀 就使用readonly

. 無(wú)論如何不要去修改setter的名稱 只有在屬性的類型是BOOL類型的時(shí)候才去修改getter的名稱為isXXX.


2:@property的用法

程序的內(nèi)存管理模式.分為兩種. MRC和ARC

與多線程相關(guān)的參數(shù).

atomic: 默認(rèn)值

nonatomic

無(wú)論是在ARC還是MRC模式下,都使用nonatomic

retain: 只能使用在MRC模式下. 當(dāng)屬性的類型是1個(gè)OC對(duì)象的時(shí)候,除了循環(huán)引用之外,全部都是使用retain。

assign: 既可以用在MRC中,也可以用在ARC之中,

- 在MRC模式中和ARC模式下. 當(dāng)屬性的類型是1個(gè)非OC對(duì)象類型的時(shí)候. 使用assign

在MRC模式下,如果出現(xiàn)循環(huán)引用. 一端使用retain 一端使用assign

strong: 只能使用在ARC模式下,當(dāng)屬性的類型是1個(gè)OC對(duì)象的時(shí)候,除了循環(huán)引用之外,全部都是使用strong

weak: 只能使用在ARC模式下,當(dāng)出現(xiàn)循環(huán)引用的時(shí)候. 一端使用strong 一端使用weak

readwrite: 可以使用在ARC模式和MRC模式下,代表同時(shí)生成屬性的getter、setter

readonly: 可以使用在ARC模式和MRC模式下 代表只成屬性的getter

修改生成的getter setter的名字: 在ARC和MRC中都可以使用.

@property參數(shù): 在MRC中使用retain的 用strong來(lái)代替就可以了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS內(nèi)存管理 概述 什么是內(nèi)存管理 應(yīng)用程序內(nèi)存管理是在程序運(yùn)行時(shí)分配內(nèi)存(比如創(chuàng)建一個(gè)對(duì)象,會(huì)增加內(nèi)存占用)與...
    蚊香醬閱讀 5,825評(píng)論 8 119
  • 看慣了金庸厚實(shí)綿密的文筆,我第一次閱讀古龍,卻感到極為詫異。文筆生硬,形容空洞,故事生拉硬扯,武功描寫草草帶過,更...
    朝歌閱讀 832評(píng)論 4 11
  • 周末了,該是見孩子的時(shí)間。上周說好的周六和我過夜,很興奮地準(zhǔn)備了一大堆食材。兒子喜歡吃肉圓子,專門買了肉,親手細(xì)細(xì)...
    小蘇瑪閱讀 299評(píng)論 0 1
  • 從一開始看到開頭覺得沉重,一個(gè)人死了的經(jīng)歷,沒有太多的心情看下去,但是看到后面,覺得就是我現(xiàn)在生活的世界的一個(gè)濃縮...
    簡(jiǎn)單期望快樂的我閱讀 344評(píng)論 0 0

友情鏈接更多精彩內(nèi)容