私はARCを使用しています(いいえ、これはNDAではありません)。私は私のインターフェースで私のivarを宣言しています
_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
Ivarがどのように宣言されているかに注意してください。
ARCおよびiPhoneSimulator 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
Mac App StoreからXCode(4.2+)を更新しても、Appleが必要とするように、古いバージョンのXCodeがコンピューターに残るという問題があります。 XCodeをランチパッドに固定して起動すると、以下のようにこれらすべてのエラーが発生します。たとえば、Spotlight機能を使用して、XCodeの新しいバージョンを見つけて実行し、最初のタスクの1つとして実行する必要があります。古いバージョンのXCodeが削除され、このようなエラーの報告はなくなります。