我正在编写一个类,该类具有对委托(delegate)对象的回调,但是ARC存在问题。

例如我有符合ProtocolA的ObjectA(代表)和ObjectB(它是回调代表的对象)。我将ObjectA作为@property存储在ObjectB中。

在这种情况下,哪些变量应该是强变量,哪些变量应该是弱引用?我需要避免这种情况,即从ObjectA传递“self”到ObjectB来设置委托(delegate)会导致从强指针到弱指针的转换。

最佳答案

为避免循环引用,请将ObjectB的委托(delegate)另存为弱引用。因为ObjectA“拥有” ObjectB,所以ObjectA不应释放ObjectA,而ObjectB具有对其的引用。所以写:

    @property (weak, nonatomic) id <ObjectBDelegate> delegate;

关于iphone - ARC的Objective-C代表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8041906/

10-11 08:46