如果我从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