2

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

4

1 回答 1

1

通过在没有 ARC 的情况下编译 OCMock 来解决。(在每个 OCMock 源文件上使用 -fno-objc-arc 标志)

于 2013-04-16T14:11:30.310 回答