定義屬性的關(guān)鍵字總結(jié)

定義屬性中的特性有atomic褐望、nonatomic、copy坛吁、assign劳殖、strong、weak等拨脉,一般格式如下:

atomic:

默認(rèn)屬性哆姻。

當(dāng)前進(jìn)程進(jìn)行到一半時(shí),其他線程訪問(wèn)當(dāng)前線程玫膀,可保證先執(zhí)行完當(dāng)前線程矛缨。

只保證setter/getter完整,即讀寫(xiě)安全(使用了自旋鎖(原子操作),確保線程同步)箕昭,不是線程安全灵妨。


nonatomic:

非默認(rèn)屬性。

兩個(gè)線程同時(shí)訪問(wèn)同一個(gè)屬性將會(huì)導(dǎo)致無(wú)法預(yù)計(jì)的結(jié)果落竹。

優(yōu)點(diǎn)是程序運(yùn)行速度快泌霍。


copy:

是owner,不是reference筋量。當(dāng)對(duì)象可變時(shí)烹吵,可設(shè)為copy,用于獲取此值的副本桨武。

新的對(duì)象引用計(jì)數(shù)為1肋拔,與原始對(duì)象引用計(jì)數(shù)無(wú)關(guān),且原始對(duì)象引用計(jì)數(shù)不會(huì)改變呀酸。

使用copy創(chuàng)建的新對(duì)象也是強(qiáng)引用凉蜂,使用完后需要釋放掉該對(duì)象。

copy特性可以減少對(duì)象對(duì)上下文的依賴(lài)性誉。新對(duì)象窿吩、原始對(duì)象中任一對(duì)象的值改變不會(huì)影響另一對(duì)象的值。

要想設(shè)置該對(duì)象的特性為copy错览,該對(duì)象必須遵守NSCopying協(xié)議纫雁,F(xiàn)oundation類(lèi)默認(rèn)實(shí)現(xiàn)了NSCopying協(xié)議,只需要為自定義的類(lèi)實(shí)現(xiàn)該協(xié)議即可倾哺。


assign:

與copy相反轧邪,只是reference(引用),不是owner(所有者)羞海,只返回指針忌愚。

用于CGFloat、NSInteger却邓、BOOL等類(lèi)型硕糊。

釋放后再發(fā)送消息會(huì)導(dǎo)致程序崩潰。


strong:

默認(rèn)屬性腊徙。

strong == retain简十,iOS引入ARC后,用strong替代了retain撬腾。

創(chuàng)建一個(gè)強(qiáng)引用的指針勺远,引用對(duì)象的引用計(jì)數(shù)加1。

strong特性表示兩個(gè)對(duì)象內(nèi)存地址相同(建立一個(gè)指針时鸵,進(jìn)行指針拷貝),內(nèi)容會(huì)一直保持相同,直到變更一個(gè)對(duì)象的內(nèi)存地址饰潜,或?qū)⑵湓O(shè)置為nil初坠。

如果有多個(gè)對(duì)象同時(shí)引用一個(gè)屬性,任一對(duì)象對(duì)該屬性的修改都會(huì)影響其他對(duì)象獲取的值彭雾。

所有實(shí)例變量碟刺、局部變量默認(rèn)都是strong。


weak:

只是reference(引用)薯酝,不是owner(所有者)半沽,即引用計(jì)數(shù)不會(huì)加1。

可將weak對(duì)象設(shè)為nil吴菠,向nil發(fā)送消息者填,什么都不會(huì)執(zhí)行,程序也不會(huì)崩潰做葵。

代理使用weak占哟。delegate幾乎一直own代理對(duì)象,所以代理對(duì)象應(yīng)該對(duì)代理使用weak酿矢,否則會(huì)形成循環(huán)引用(retain cycle)榨乎。但也有例外,如果代理對(duì)象的生命周期比代理短瘫筐,代理對(duì)象也可以使用strong蜜暑。

IBOutlet常用weak。


readonly:

非默認(rèn)屬性策肝。

只有可讀方法肛捍,即getter方法。


readwrite:

默認(rèn)屬性驳糯。

若希望屬性只允許自己讀寫(xiě)篇梭,而對(duì)所有外部文件都是只讀的,那么可以在接口的位置聲明該屬性為readonly類(lèi)型酝枢,在私有接口的位置重新該屬性為readwrite類(lèi)型恬偷。


有關(guān)strong與weak對(duì)比的生動(dòng)形象例子!

假設(shè)對(duì)象是一條小狗帘睦,小狗想跑走(be deallocated)袍患。

strong類(lèi)型就像是拴狗的繩子,只要有一條繩子栓住狗竣付,它就不能跑走诡延,如果有五條繩子拴著同一條狗(五個(gè)strong類(lèi)型指向同一個(gè)對(duì)象),只有當(dāng)五條繩子都釋放狗才可以跑走古胆。

weak類(lèi)型就像是小孩子看著小狗說(shuō):看這里有小狗肆良。只要還有繩子拴著小狗筛璧,小孩子們就可以繼續(xù)指著小狗說(shuō):看這里有小狗。當(dāng)繩子釋放了的時(shí)候惹恃,不管有多少小孩子依舊在指著小狗說(shuō):看這里的小狗夭谤。小狗都會(huì)跑掉。

當(dāng)最后一個(gè)strong指針不再指向這個(gè)對(duì)象巫糙,這個(gè)對(duì)象就會(huì)被釋放朗儒,此時(shí)所有指向這個(gè)對(duì)象的weak指針都將被清空。

參考:

http://www.reibang.com/p/4fb51144d4ca

https://github.com/pro648/tips/blob/master/sources/iOS%E4%B8%AD%E5%AE%9A%E4%B9%89%E5%B1%9E%E6%80%A7%E6%97%B6%E7%9A%84atomic%E3%80%81nonatomic%E3%80%81copy%E3%80%81assign%E3%80%81strong%E3%80%81weak%E7%AD%89%E5%87%A0%E4%B8%AA%E7%89%B9%E6%80%A7%E7%9A%84%E5%8C%BA%E5%88%AB.md

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末参淹,一起剝皮案震驚了整個(gè)濱河市醉锄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浙值,老刑警劉巖恳不,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異亥鸠,居然都是意外死亡妆够,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)负蚊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)神妹,“玉大人,你說(shuō)我怎么就攤上這事家妆⊥臆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵伤极,是天一觀的道長(zhǎng)蛹找。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哨坪,這世上最難降的妖魔是什么庸疾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮当编,結(jié)果婚禮上届慈,老公的妹妹穿的比我還像新娘。我一直安慰自己忿偷,他們只是感情好金顿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鲤桥,像睡著了一般揍拆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茶凳,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天嫂拴,我揣著相機(jī)與錄音播揪,去河邊找鬼。 笑死筒狠,一個(gè)胖子當(dāng)著我的面吹牛剪芍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窟蓝,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饱普!你這毒婦竟也來(lái)了运挫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤套耕,失蹤者是張志新(化名)和其女友劉穎谁帕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冯袍,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匈挖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了康愤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儡循。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖征冷,靈堂內(nèi)的尸體忽然破棺而出择膝,到底是詐尸還是另有隱情,我是刑警寧澤检激,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布肴捉,位于F島的核電站,受9級(jí)特大地震影響叔收,放射性物質(zhì)發(fā)生泄漏齿穗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一饺律、第九天 我趴在偏房一處隱蔽的房頂上張望窃页。 院中可真熱鬧,春花似錦蓝晒、人聲如沸腮出。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胚嘲。三九已至,卻和暖如春洛二,著一層夾襖步出監(jiān)牢的瞬間馋劈,已是汗流浹背攻锰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妓雾,地道東北人娶吞。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像械姻,于是被迫代替她去往敵國(guó)和親妒蛇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • OC基礎(chǔ)部分 優(yōu)質(zhì)鏈接:面試相關(guān)面試300題 關(guān)于block 這是一篇很好的帖子 block有三種類(lèi)型:NSCon...
    Q14閱讀 649評(píng)論 0 0
  • “面試楷拳,有一定的技巧在里邊绣夺,但是更重要的在于平時(shí)的積累』兑荆” —— 美團(tuán)面試官的一句話陶耍。“臨陣磨槍可以讓你找到一...
    春田花花幼兒園閱讀 1,295評(píng)論 4 29
  • @synthesize和@dynamic分別有什么作用?@property有兩個(gè)對(duì)應(yīng)的詞坤按,一個(gè)是 @synthes...
    筆筆請(qǐng)求閱讀 508評(píng)論 0 1
  • 前言:這篇文章是我看李明杰老師的iOS底層原理班(下)/OC對(duì)象/關(guān)聯(lián)對(duì)象/多線程/內(nèi)存管理/性能優(yōu)化總結(jié)所得毯欣,斷...
    SunshineBrother閱讀 6,853評(píng)論 12 137
  • Block定義 閉包是一個(gè)函數(shù)(或指向函數(shù)的指針),再加上該函數(shù)執(zhí)行的外部的上下文變量(有時(shí)候也稱(chēng)為自由變量)bl...
    Breezes閱讀 789評(píng)論 1 1