我知道,代表永远不会被保留!曾经!
但是谁能解释我为什么永远不会保留代表?...
提前感谢
这是一个内存管理的事情。
Objective-C 使用引用计数来保持内存清洁。这确实意味着它无法检测到循环关系。
例子:
由你决定。如果您声明将其保留(strong
在 ARC 中),它将被保留。
规则是不要保留它,因为它已经在其他地方保留了,更重要的是您将避免保留周期。
要扩展 djromero 的答案:
如果您有 aUIViewController
其中包含 a UITableView
,则控制器很可能会保留该表,它将是它的委托/数据源。如果表保留了委托/数据源,那么它们将相互保留,因此永远不会被释放。
整个想法是委托应该总是比将其分配为委托的对象寿命长。因此,webview 将在分配的委托之前发布。