保留周期:“亲子”

时间:2016-09-21 02:59:13

标签: ios objective-c swift delegates retain-cycle

“弱属性的一个常见用例是父子数据结构。按照惯例,父对象应该与它的子节点保持强引用,子节点应该将弱引用存储回父节点。弱引用是也是代表设计模式的固有部分。“

问题:

1)为什么孩子可以将弱引用存储回父母?如果他们的父母“消失”怎么办?

2)这里的委托设计模式是指什么?它与弱引用有什么关系?

1 个答案:

答案 0 :(得分:1)

对于问题1,如果父项被释放,子项中的弱引用将成为对已释放对象的引用,使用它将导致异常。

避免这种情况的方法是让父母有责任让孩子解除这种情况。孩子永远不会对解除分配的父母有弱的引用,因为当孩子的父母被释放时,孩子会被解除分配。

问题2,here's a good reference for the delegate pattern.