宣布委托伊娃时发生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。 那么你没有更多的错误报告这样的。