我正在编写一个对委托对象进行回调的类,但是我遇到了ARC的问题 .
例如我有ObjectA(委托),它符合ProtocolA,而ObjectB是回调委托的对象 . 我在ObjectB中将ObjectA存储为@property .
在这种情况下,哪些变量应该是强大的,哪些应该是弱参考?我需要避免将“自我”从ObjectA传递到ObjectB以设置委托导致从强指针到弱指针的转换的情况 .
要避免循环引用,请将ObjectB的委托保存为弱引用 . 因为ObjectA“拥有”ObjectB,所以不应释放ObjectA,而ObjectB具有对它的引用 . 所以写:
@property (weak, nonatomic) id <ObjectBDelegate> delegate;
代表属性通常应该很弱 . 将消息传递给委托的对象不“拥有”委托,事实上它通常是相反的方式 .
2 回答
要避免循环引用,请将ObjectB的委托保存为弱引用 . 因为ObjectA“拥有”ObjectB,所以不应释放ObjectA,而ObjectB具有对它的引用 . 所以写:
代表属性通常应该很弱 . 将消息传递给委托的对象不“拥有”委托,事实上它通常是相反的方式 .