27

私は 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 - 自動参照カウント

4

3 に答える 3

46

次のようなものを試してください(例: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がどのように宣言されているかに注意してください。

于 2011-08-11T07:43:05.877 に答える
9

ARCとiPhoneSimulator5.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
于 2011-08-11T08:42:55.497 に答える
1

Mac App Store から XCode (4.2+) を更新しても、Apple の要求に従って古いバージョンの XCode がコンピューターに残るという問題があります。そのため、XCode をランチパッドに固定して起動すると、以下に示すようにこれらすべてのエラーが発生します。たとえば、Spotlight 機能を使用して XCode の新しいバージョンを見つけて実行し、最初のタスクの 1 つとして XCode の古いバージョンを削除する必要があります。その後、このようなエラー報告はもうありません。

于 2012-05-15T19:42:29.560 に答える