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