2
我剛升級到Xcode版本4.3.2(4E2002)。我正在將手動內存管理的模擬類轉換爲ARC。將OCMock類轉換爲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我不知道?
「OCProtocolMockObject」的'@ interface'看起來像什麼? – 2012-04-02 20:46:24
沒什麼特別的。已更新以包含它。 (OCMockObject也使用協議,但包括它也沒有) – nont 2012-04-02 20:55:32
看來,協議只是最近宣佈的這些天。這導致了不同的問題,請參閱https://github.com/erikdoe/ocmock/pull/7上的評論我必須在我的Lion機器上升級到新版本才能再次檢查。 – 2012-04-05 10:34:54