我刚刚升级到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我不知道吗?
答案 0 :(得分:1)
通过编译没有ARC的OCMock解决了这个问题。 (在每个OCMock源文件上使用-fno-objc-arc标志)