如果我從InterfaceB將一個代理屬性分配給來自Interface Builder的classA,我應該將IBOutlet分配給classB,然後在classA dealloc中,通過插座將代理設置爲nil? (假設ClassA的是XIB的文件的所有者...)我應該通過Interface Builder創建委託嗎?
2
A
回答
4
簡短的回答:是的。
無論您是否使用Interface Builder,只要委託人放棄委託對象的所有權(即釋放)委託人即可將其本身作爲委託對象的委託移除。這可以最遲在其dealloc方法中,但它也可以在更早的時候發生。
原因:通常情況下,代表某種委派對象的父對象。很多時候,委託和委託對象的所有者是同一個對象。因爲父對象通常保留子對象,所以爲了避免循環引用,委託(即子對象)對象通常不保留其委託。在這些情況下,可能會發生委託對象在委託對象仍然存活的情況下被取消分配(如果其他對象也保留了它)。如果現在委託對象試圖訪問它的委託(它不再存在),程序可能會崩潰。
父對象釋放其子對象之前(通常,但並非總是如此,在其dealloc方法),它應該調用childObject.delegate = nil;
所以,正確的。
相關問題
- 1. iPhone Interface Builder和委託代理
- 2. 我應該創建一個新的委託實例嗎?
- 3. 通過委託
- 4. 在Interface Builder中使用setDelegate設置委託與區別:?
- 5. 在Swift中Interface Builder,@IBOutlet和委託和數據源協議
- 6. 有什麼辦法可以在Interface Builder中設置UINavigationBar的委託嗎?
- 7. C++委託創建
- 8. 我應該在應用程序委託中實現dealloc嗎?
- 9. 何時應該使用Interface Builder?
- 10. 挑選顏色通過Interface Builder中
- 11. 通過Interface Builder在UITextView中添加'...'
- 12. 我們應該在dealloc方法中釋放委託嗎?
- 13. IPhone:如何那名在Interface Builder創建
- 14. 使用Interface Builder創建UIButton offscreen
- 15. 在Interface Builder中創建遊戲精靈?
- 16. GNUstep - GORM可以打開Interface Builder創建的NIB文件嗎?
- 17. 通過委託加載DataGridView
- 18. 我可以繼承使用Interface Builder構建的視圖嗎?
- 19. 創建動態委託WCF TransparentProxy
- 20. 我可以通過Interface Builder在NSCollection視圖中連接一個動作嗎?
- 21. 如何在Interface Builder中通過TabBaritem終止iPhone應用程序?
- 22. 爲什麼我在Interface Builder中創建的按鈕不顯示?
- 23. 創建類別,inherance或委託?
- 24. 在Interface Builder中爲通用應用程序創建單個.xib文件? (iOS)
- 25. 我應該創建此訪問器嗎?
- 26. 我應該爲模塊創建DLL嗎?
- 27. 我應該爲此創建索引嗎?
- 28. 我應該創建另一個表嗎?
- 29. 我應該創建子類NSManagedObject嗎?
- 30. 在協議中創建委託方法
除非你真正的委託是你不應該喪失已在'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