Iphone 带有ARC的Objective-C学员

Iphone 带有ARC的Objective-C学员,iphone,objective-c,ios,ipad,automatic-ref-counting,Iphone,Objective C,Ios,Ipad,Automatic Ref Counting,我正在编写一个类,该类具有对委托对象的回调,但在ARC方面存在问题 e、 g.我有ObjectA(委托),它符合ProtocolA,ObjectB是调用委托的对象。我将ObjectA存储为ObjectB中的@属性 在这种情况下,哪些变量应该是强引用,哪些应该是弱引用?我需要避免将“self”从ObjectA传递到ObjectB以设置委托会导致从强指针转换为弱指针的情况。要避免循环引用,请将ObjectB的委托另存为弱引用。因为ObjectA“拥有”ObjectB,所以ObjectA不应该被释放,

我正在编写一个类,该类具有对委托对象的回调,但在ARC方面存在问题

e、 g.我有ObjectA(委托),它符合ProtocolA,ObjectB是调用委托的对象。我将ObjectA存储为ObjectB中的@属性


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

要避免循环引用,请将ObjectB的委托另存为弱引用。因为ObjectA“拥有”ObjectB,所以ObjectA不应该被释放,而ObjectB有一个对它的引用。所以写下:

    @property (weak, nonatomic) id <ObjectBDelegate> delegate;
@属性(弱、非原子)id委托;

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

谢谢。这很好——我犯了一个错误,使用了“@property(弱,非原子)id*delegate;”,并且得到了一些毫无帮助的错误消息,让我认为这是一个强/弱引用问题!伙计,那东西藏得很好。我也有一个指针。。。坦率地说,这是一个有趣的问题解决方案。