我不明白为什么用弱指针定义一个委托(delegate)是正确的:
@property (nonatomic,weak) id delegate;
我不明白为什么不需要保留对委托(delegate)的引用...我不希望我用作委托(delegate)的对象被释放...因此,我更喜欢使用强引用不弱!
在许多情况下,委托(delegate)与将创建我的类的实例的对象相同,在这种情况下,创建弱引用将是避免保留循环的一个很好的解决方案......但是如果我选择一个完全不同的对象怎么办作为代表?
我搜索了有关堆栈溢出的其他问题,但找不到可以帮助我完全理解这种情况的内容。
最佳答案
对象弱保留其委托(delegate)的原因是为了避免保留循环。想象以下场景:对象 a
创建 b
并保留它,然后将自己设置为 b
的委托(delegate)。 a
由其所有者释放,留下一个包含 a
和 b
的保留循环。这实际上是一个非常常见的场景。考虑一个 View Controller ,它拥有一个 View 并充当该 View 的委托(delegate)。在这种情况下, View 不应该保留 Controller ——作为适当的 MVC 架构的主体并防止保留循环。
关于objective-c - 为什么使用弱指针进行委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8449040/