如果我從InterfaceB將一個代理屬性分配給來自Interface Builder的classA,我應該將IBOutlet分配給classB,然後在classA dealloc中,通過插座將代理設置爲nil? (假設ClassA的是XIB的文件的所有者...)我應該通過Interface Builder創建委託嗎?
2
A
回答
4
簡短的回答:是的。
無論您是否使用Interface Builder,只要委託人放棄委託對象的所有權(即釋放)委託人即可將其本身作爲委託對象的委託移除。這可以最遲在其dealloc方法中,但它也可以在更早的時候發生。
原因:通常情況下,代表某種委派對象的父對象。很多時候,委託和委託對象的所有者是同一個對象。因爲父對象通常保留子對象,所以爲了避免循環引用,委託(即子對象)對象通常不保留其委託。在這些情況下,可能會發生委託對象在委託對象仍然存活的情況下被取消分配(如果其他對象也保留了它)。如果現在委託對象試圖訪問它的委託(它不再存在),程序可能會崩潰。
父對象釋放其子對象之前(通常,但並非總是如此,在其dealloc方法),它應該調用childObject.delegate = nil;
所以,正確的。
相關問題
- 1. 我應該使用Interface Builder來創建表單元嗎?
- 2. iPhone Interface Builder和委託代理
- 3. 我應該清理如果我使用Interface Builder爲當Interface Builder中創建了子視圖創建視圖
- 4. 我應該創建一個新的委託實例嗎?
- 5. 我們是否應該使用Interface Builder來動態創建UI?
- 6. 通過委託
- 7. 我可以使用Interface Builder構建RubyMotion應用程序嗎?
- 8. 在Interface Builder中使用setDelegate設置委託與區別:?
- 9. 在Swift中Interface Builder,@IBOutlet和委託和數據源協議
- 10. 有什麼辦法可以在Interface Builder中設置UINavigationBar的委託嗎?
- 11. C++委託創建
- 12. 我應該在應用程序委託中實現dealloc嗎?
- 13. 何時應該使用Interface Builder?
- 14. 我們應該在dealloc方法中釋放委託嗎?
- 15. 通過Interface Builder在UITextView中添加'...'
- 16. 挑選顏色通過Interface Builder中
- 17. 使用Ast.Expressions創建委託
- 18. 在Interface Builder中創建遊戲精靈?
- 19. 使用Interface Builder創建UIButton offscreen
- 20. IPhone:如何那名在Interface Builder創建
- 21. Zizaco委託不創建entrust.php
- 22. 我可以在我的項目中創建應用程序委託文件嗎?
- 23. GNUstep - GORM可以打開Interface Builder創建的NIB文件嗎?
- 24. 無法通過委託
- 25. 基礎上通過委託
- 26. 通過委託加載DataGridView
- 27. 從MethodInfo創建委託
- 28. 創建委託事件
- 29. 我可以繼承使用Interface Builder構建的視圖嗎?
- 30. 創建動態委託WCF TransparentProxy
除非你真正的委託是你不應該喪失已在'delegate'屬性: '如果([otherObject代表] ==個體經營)[otherObject setDelegate:無];' – 2010-02-13 02:03:19
+1傑里米。感謝您的更正。 – 2010-02-13 07:13:24
1)Interface Builder設置了連接,所以不應該爲它的設置負責? 2)父對象可能甚至沒有對委託對象的引用,因爲它是在Interface Builder中創建的,沒有明確的出口。那麼你如何解除其委託? – user102008 2012-04-10 18:07:40