ARC - 如何管理那些需要不安全的属性?

时间:2012-09-03 11:41:26

标签: ios delegates automatic-ref-counting

我正在使用ARC,我在

界面中声明了我的ivar

id itemDelegate; 然后我宣布财产:

@property (nonatomic, weak) id<myAppDelegate> Delegate;

在我的实现文件中,我只是将其合成为:

@synthesize Delegate;

但是,我收到错误:

“_weak属性'itemDelegate'的现有ivar'SetDelegate'必须是_weak”。

有人可以提出解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以删除iVar声明,因为它将自动创建。

问题是iVars的默认所有权限定符为__strong。因此,id itemDelegate__strong id itemDelegate相同。如果您将该属性声明为弱,那么您就会遇到问题。您需要使用__weak。 (或__unsafe_unretained如果您需要iOS 4的向后兼容性。)