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ì)象值。

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ú)效在其他地方這樣做
- 3 回答
- 0 關(guān)注
- 443 瀏覽
添加回答
舉報(bào)