我正在编写一个具有委托(delegate)对象回调的类,但在使用 ARC 时遇到问题。
例如我有符合 ProtocolA 的 ObjectA(委托(delegate))和 ObjectB,它是回调委托(delegate)的对象。我将 ObjectA 作为 @property 存储在 ObjectB 中。
在这种情况下,哪些变量应该是强引用,哪些应该是弱引用?我需要避免将“self”从 ObjectA 传递到 ObjectB 以设置委托(delegate)导致从强指针转换为弱指针的情况。
最佳答案
为避免循环引用,请将 ObjectB 的委托(delegate)保存为弱引用。因为 ObjectA“拥有”ObjectB,所以不应释放 ObjectA,而 ObjectB 有对它的引用。所以写:
@property (weak, nonatomic) id <ObjectBDelegate> delegate;
关于iphone - 带有 ARC 的 Objective-C 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041906/