宣布委托伊娃时发生ARC错误

我正在使用ARC(不,这不是NDA)。 我正在与我的界面宣布我的伊娃

id itemDelegate; 

然后我宣布的财产:

@property (nonatomic, weak) id<mySecretDelegateYouAreNotSupposedToSeeOnSO> itemDelegate; (由于ARC,而不是分配)

在我的实现文件中,我简单地综合它: @synthesize itemDelegate;

但是,我收到错误:

 "Existing ivar 'ItemDelegate' for _weak property 'itemDelegate' must be _weak". 

任何人都知道什么是错的? 谢谢你的帮助。

ARC – 自动引用计数

尝试如下所示( 例如: http : //vinceyuan.blogspot.com/2011/06/wwdc2011-session-323-introducing.html ):

 @interface SomeObject : NSObject { __weak id <SomeObjectDelegate> delegate; } @property (weak) id <SomeObjectDelegate> delegate; @end 

请注意如何宣布伊娃。

与ARC和iPhone模拟器5.0以下似乎工作得很好(没有警告等):

SomeObject.h

 @class SomeObject; @protocol SomeObjectDelegate <NSObject> - (void)someObjectDidFinishDoingSomethingUseful:(SomeObject *)object; @end @interface SomeObject : NSObject { __unsafe_unretained id <SomeObjectDelegate> _delegate; } @property (nonatomic, assign) id <SomeObjectDelegate> delegate; @end 

SomeObject.m

 #import "SomeObject.h" @implementation SomeObject @synthesize delegate = _delegate; @end 

即使您按照Apple的要求从Mac App Store更新XCode(4.2+),也会有一个问题,即在您的计算机上保留旧版本的XCode。 因此,如果您将XCode固定到您的启动板,并启动它,您将得到所有这些错误,如下所述。 您必须find更新版本的XCode,例如使用Spotlightfunction,运行它,然后作为其首要任务之一,它将删除旧版本的XCode。 那么你没有更多的错误报告这样的。