我刚刚升级到 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 吗?