第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么Objective-C代理通常給予屬性賦值而不是保留?

為什么Objective-C代理通常給予屬性賦值而不是保留?

holdtom 2019-07-29 15:02:01
為什么Objective-C代理通常給予屬性賦值而不是保留?我正在瀏覽Scott Stevenson維護(hù)的精彩博客,我正在嘗試?yán)斫庖粋€(gè)基本的Objective-C概念,即為委托者分配'assign'屬性vs'retain'。注意,兩者在垃圾收集環(huán)境中是相同的。我主要關(guān)注的是非基于GC的環(huán)境(例如:iPhone)。直接來(lái)自Scott的博客:“assign關(guān)鍵字將生成一個(gè)setter,它直接將值賦給實(shí)例變量,而不是復(fù)制或保留它。這最適用于NSInteger和CGFloat等原始類(lèi)型,或者你不直接擁有的對(duì)象,如委托。”你不直接擁有委托對(duì)象是什么意思?我通常會(huì)保留我的代表,因?yàn)槿绻也幌M麄冸x開(kāi)深淵,保留將為我照顧。我通常抽象UITableViewController遠(yuǎn)離其各自的dataSource和委托。我也保留那個(gè)特定的對(duì)象。我想確保它永遠(yuǎn)不會(huì)消失,所以我的UITableView總是有它的代表。有人可以進(jìn)一步解釋我錯(cuò)在哪里/為什么,所以我可以理解Objective-C 2.0編程中使用委托上的assign屬性而不是retain的常見(jiàn)范例嗎?謝謝!
查看完整描述

3 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

因?yàn)榘l(fā)送委托消息的對(duì)象不擁有委托。

很多時(shí)候,它是相反的,因?yàn)楫?dāng)控制器將自己設(shè)置為視圖或窗口的委托時(shí):控制器擁有視圖/窗口,因此如果視圖/窗口擁有其委托,則兩個(gè)對(duì)象將彼此擁有。當(dāng)然,這是一個(gè)保留周期,類(lèi)似于具有相同結(jié)果的泄漏(應(yīng)該死的物體保持活著)。

其他時(shí)候,對(duì)象是對(duì)等的:沒(méi)有一個(gè)擁有另一個(gè),可能是因?yàn)樗鼈兌加赏粋€(gè)第三個(gè)對(duì)象擁有。

無(wú)論哪種方式,具有委托的對(duì)象都不應(yīng)保留其委托。

(順便說(shuō)一下,至少有一個(gè)例外。我不記得它是什么,我認(rèn)為沒(méi)有充分的理由。)


附錄(2012-05-19補(bǔ)充):在ARC下,你應(yīng)該使用weak而不是assign。nil當(dāng)對(duì)象死亡時(shí),弱引用會(huì)自動(dòng)設(shè)置,從而消除了委托對(duì)象最終向死代表發(fā)送消息的可能性。

如果由于某種原因您遠(yuǎn)離ARC,至少更改assign指向?qū)ο蟮膶傩?code>unsafe_unretained,這明確表明這是對(duì)對(duì)象的未歸屬但非歸零的引用。

assign 仍適用于ARC和MRC下的非對(duì)象值。


查看完整回答
反對(duì) 回復(fù) 2019-07-29
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

請(qǐng)注意,當(dāng)您擁有一個(gè)賦值的委托時(shí),每當(dāng)要釋放該對(duì)象時(shí),始終將該委托值設(shè)置為nil非常重要 - 因此,如果某個(gè)對(duì)象沒(méi)有取消分配,則應(yīng)始終小心地將該委托引用置為無(wú)效在其他地方這樣做


查看完整回答
反對(duì) 回復(fù) 2019-07-29
  • 3 回答
  • 0 關(guān)注
  • 443 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)