Objective-C ARC代表

Tom*_*m W 12 iphone objective-c ipad ios automatic-ref-counting

我正在编写一个对委托对象进行回调的类,但是我遇到了ARC的问题.

例如,我有ObjectA(委托),它符合ProtocolA,而ObjectB是回调委托的对象.我在ObjectB中将ObjectA存储为@property.

在这种情况下,哪些变量应该很强,哪些应该是弱引用?我需要避免将"自我"从ObjectA传递到ObjectB以设置委托导致从强指针到弱指针的转换的情况.

小智 22

要避免循环引用,请将ObjectB的委托保存为弱引用.因为ObjectA"拥有"ObjectB,所以不应该释放ObjectA,而ObjectB具有对它的引用.所以写:

    @property (weak, nonatomic) id <ObjectBDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)


Jim*_*Jim 8

代表属性通常应该很弱.将消息传递给委托的对象不"拥有"委托,事实上它通常是另一种方式.