我知道,代表永远不会被保留!永远!
但任何人都可以解释为什么委托永远不会被保留?...
提前完成
答案 0 :(得分:14)
这是一个记忆管理的事情。
Objective-C使用引用计数来保持内存清洁。这确实意味着它无法检测循环关系。
示例:
答案 1 :(得分:3)
这取决于你。如果您声明要保留(ARC中为strong
),则会保留它。
规则是不保留它,因为它已经保留在别处,更重要的是你将避免保留周期。
答案 2 :(得分:2)
扩展djromero的答案:
如果您的UIViewController
包含UITableView
,则控制器很可能会保留该表,它将是它的委托/ dataSource。如果表保留了委托/ dataSource,那么它们将相互保留,从而永远不会被释放。
答案 3 :(得分:1)
整个想法是委托应该总是比将其指定为委托的对象更长。因此,webview将在分配的代表之前发布。