weak唱凯、assign尔许、strong、copy

1. 什么情況使用 weak 關(guān)鍵字诀浪,相比 assign 有什么不同棋返?

什么情況使用 weak 關(guān)鍵字?
1)在ARC中,在有可能出現(xiàn)循環(huán)引用的時(shí)候,往往要通過(guò)讓其中一端使用weak來(lái)解決,比如: delegate代理屬性
2)自身已經(jīng)對(duì)它進(jìn)行一次強(qiáng)引用,沒(méi)有必要再?gòu)?qiáng)引用一次,此時(shí)也會(huì)使用weak雷猪,自定義IBOutlet控件屬性一般也使用weak睛竣;當(dāng)然,也可以使用strong求摇。
在下文也有論述:《IBOutlet連出來(lái)的視圖屬性為什么可以被設(shè)置成weak?》

不同點(diǎn):
1)weak 此特質(zhì)表明該屬性定義了一種“非擁有關(guān)系”(nonowning relationship)射沟。為這種屬性設(shè)置新值時(shí)殊者,設(shè)置方法既不保留新值,也不釋放舊值验夯。
此特質(zhì)同assign類(lèi)似猖吴, 然而在屬性所指的對(duì)象遭到摧毀時(shí),屬性值也會(huì)清空(nil out)挥转。 而 assign 的“設(shè)置方法”只會(huì)執(zhí)行針對(duì)“純量類(lèi)型” (scalar type海蔽,例如 CGFloat 或 NSlnteger 等)的簡(jiǎn)單賦值操作。
2)assigin 可以用非OC對(duì)象,而weak必須用于OC對(duì)象

2. 怎么用 copy 關(guān)鍵字绑谣?

用途:
1)NSString党窜、NSArray、NSDictionary 等等經(jīng)常使用copy關(guān)鍵字借宵,是因?yàn)樗麄冇袑?duì)應(yīng)的可變類(lèi)型:NSMutableString幌衣、NSMutableArray、NSMutableDictionary壤玫;
2)block也經(jīng)常使用copy關(guān)鍵字泼掠,具體原因見(jiàn)官方文檔:Objects Use Properties to Keep Track of Blocks
block使用copy是從MRC遺留下來(lái)的“傳統(tǒng)”,在MRC中垦细,方法內(nèi)部的block是在棧區(qū)的,使用copy可以把它放到堆區(qū)挡逼,在ARC中寫(xiě)不寫(xiě)都行括改; 對(duì)于block使用copy還是strong效果是一樣的,但寫(xiě)上copy也無(wú)傷大雅家坎,還能時(shí)刻提醒我們:編譯器自動(dòng)對(duì)block進(jìn)行了copy操作嘱能。

- copy和strong的區(qū)別?

下面做下解釋?zhuān)?/strong> copy此特質(zhì)所表達(dá)的所屬關(guān)系與strong類(lèi)似虱疏。然而設(shè)置方法并不保留新值惹骂,而是將其“拷貝” (copy)。 當(dāng)屬性類(lèi)型為NSString時(shí)做瞪,經(jīng)常用此特質(zhì)來(lái)保護(hù)其封裝性对粪,因?yàn)閭鬟f給設(shè)置方法的新值有可能指向一個(gè)NSMutableString類(lèi)的實(shí)例。這個(gè)類(lèi)是NSString的子類(lèi)装蓬,表示一種可修改其值的字符串著拭,此時(shí)若是不拷貝字符串,那么設(shè)置完屬性之后牍帚,字符串的值就可能會(huì)在對(duì)象不知情的情況下遭人更改儡遮。所以,這時(shí)就要拷貝一份“不可變” (immutable)的字符串暗赶,確保對(duì)象中的字符串值不會(huì)無(wú)意間變動(dòng)鄙币。只要實(shí)現(xiàn)屬性所用的對(duì)象是“可變的” (mutable)肃叶,就應(yīng)該在設(shè)置新屬性值時(shí)拷貝一份。

為了理解這種做法十嘿,首先要知道因惭,對(duì)非集合類(lèi)對(duì)象的copy操作:
在非集合類(lèi)對(duì)象中:對(duì)immutable對(duì)象進(jìn)行copy操作,是指針復(fù)制详幽,mutableCopy操作時(shí)內(nèi)容復(fù)制筛欢;對(duì)mutable對(duì)象進(jìn)行copy和mutableCopy都是內(nèi)容復(fù)制。

  • 用代碼簡(jiǎn)單表示如下:
    [immutableObject copy] // 淺復(fù)制
    [immutableObject mutableCopy] //深復(fù)制
    [mutableObject copy] //深復(fù)制
    [mutableObject mutableCopy] //深復(fù)制

參考鏈接:iOS 集合的深復(fù)制與淺復(fù)制

用@property聲明 NSString唇聘、NSArray版姑、NSDictionary 經(jīng)常使用copy關(guān)鍵字,是因?yàn)樗麄冇袑?duì)應(yīng)的可變類(lèi)型:NSMutableString迟郎、NSMutableArray剥险、NSMutableDictionary,他們之間可能進(jìn)行賦值操作宪肖,為確保對(duì)象中的字符串值不會(huì)無(wú)意間變動(dòng)表制,應(yīng)該在設(shè)置新屬性值時(shí)拷貝一份。

** ## 一句話總結(jié):使用‘copy’關(guān)鍵詞防止屬性的值被修改控乾。##**

3. 用@property聲明的NSString(或NSArray么介,NSDictionary)經(jīng)常使用copy關(guān)鍵字,為什么蜕衡?如果改用strong關(guān)鍵字壤短,可能造成什么問(wèn)題?

1)因?yàn)楦割?lèi)指針可以指向子類(lèi)對(duì)象,使用copy的目的是為了讓本對(duì)象的屬性不受外界影響,使用copy無(wú)論給我傳入是一個(gè)可變對(duì)象還是不可對(duì)象,我本身持有的就是一個(gè)不可變的副本.
2)如果我們使用是strong,那么這個(gè)屬性就有可能指向一個(gè)可變對(duì)象,如果這個(gè)可變對(duì)象在外部被修改了,那么會(huì)影響該屬性慨仿。copy此特質(zhì)所表達(dá)的所屬關(guān)系與strong類(lèi)似久脯。然而設(shè)置方法并不保留新值,而是將其“拷貝” (copy)镰吆。 當(dāng)屬性類(lèi)型為NSString時(shí)帘撰,經(jīng)常用此特質(zhì)來(lái)保護(hù)其封裝性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末万皿,一起剝皮案震驚了整個(gè)濱河市摧找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牢硅,老刑警劉巖慰于,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異唤衫,居然都是意外死亡婆赠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)休里,“玉大人蛆挫,你說(shuō)我怎么就攤上這事∶钍颍” “怎么了悴侵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拭嫁。 經(jīng)常有香客問(wèn)我可免,道長(zhǎng),這世上最難降的妖魔是什么做粤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任浇借,我火速辦了婚禮,結(jié)果婚禮上怕品,老公的妹妹穿的比我還像新娘妇垢。我一直安慰自己,他們只是感情好肉康,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布闯估。 她就那樣靜靜地躺著,像睡著了一般吼和。 火紅的嫁衣襯著肌膚如雪涨薪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天炫乓,我揣著相機(jī)與錄音尤辱,去河邊找鬼。 笑死厢岂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阳距。 我是一名探鬼主播塔粒,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筐摘!你這毒婦竟也來(lái)了卒茬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咖熟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后馍管,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體郭赐,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年确沸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捌锭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俘陷。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖观谦,靈堂內(nèi)的尸體忽然破棺而出拉盾,到底是詐尸還是另有隱情,我是刑警寧澤豁状,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布捉偏,位于F島的核電站,受9級(jí)特大地震影響泻红,放射性物質(zhì)發(fā)生泄漏夭禽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一承桥、第九天 我趴在偏房一處隱蔽的房頂上張望驻粟。 院中可真熱鬧,春花似錦凶异、人聲如沸蜀撑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)酷麦。三九已至,卻和暖如春喉恋,著一層夾襖步出監(jiān)牢的瞬間沃饶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工轻黑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糊肤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓氓鄙,卻偏偏與公主長(zhǎng)得像馆揉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抖拦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 今天是2017年10月24日 晴 全面踐行時(shí)間管理的第三天升酣,把我這幾天的情況匯報(bào)如下: 1、滴答清單: (1)這幾...
    MRkirc閱讀 282評(píng)論 0 0
  • 今天創(chuàng)意群打卡的內(nèi)容是收集日态罪,收集2017年夢(mèng)想清單噩茄,本來(lái)是想問(wèn)一下身邊朋友的,收到群里小伙伴啟發(fā)复颈,我采訪了Gra...
    jibingxi閱讀 706評(píng)論 0 1
  • 這個(gè)時(shí)間绩聘,我們?cè)诟墒裁茨兀砍裕染遥嫜庇觯覀儏s還是如此的度著我們的時(shí)光和青春。 想著虛幻的未來(lái)蓄髓,想著虛幻的愛(ài)情...
    小小月兒潮流閱讀 164評(píng)論 0 0
  • 元素定義HTML表單 action屬性定義在提交表單時(shí)執(zhí)行的動(dòng)作 method屬性規(guī)定在提交表單時(shí)所用的HTTP方...
    風(fēng)兩般的男人閱讀 387評(píng)論 0 0