Xcode バージョン 4.3.2 (4E2002) にアップグレードしました。モック クラスを手動メモリ管理から ARC に変換しています。
コードは次のようになります。
@implementation OCProtocolMockObject
- (id)initWithProtocol:(Protocol *)aProtocol
{
[super init];
mockedProtocol = aProtocol;
return self;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"OCMockObject[%s]", [mockedProtocol name]];
}
@interface は次のようになります。
@interface OCProtocolMockObject : OCMockObject
{
Protocol *mockedProtocol;
}
コンパイラは次のように不平を言います。
"Receiver type 'Protocol' for instance message is a forward declaration".
記述方法で「mockedProtocol」が強調表示されます。
私は以前にこの問題に遭遇しました。ARC モードでは、通常、コンパイラが前方参照に対してより厳密であるため、適切なヘッダー ファイルをインクルードする必要があるだけです。
ただし、私が見つけることができる唯一の「Protocol.h」は
#import <objc/Protocol.h>
これをインポートしても何も起こりません。また、インポートを OCProtocolMockObject.h に追加しても何も起こりません。私が認識していない他の Protocol.h はありますか?