首页 文章

Objective-C ARC代表

提问于
浏览
12

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

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

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

2 回答

  • 22

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

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

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

相关问题