Я только что обновился до версии 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 OCProtocolMockObject : OCMockObject
{
Protocol *mockedProtocol;
}
Компилятор жалуется, что:
"Receiver type 'Protocol' for instance message is a forward declaration".
"mockedProtocol" выделен в методе описания.
Я сталкивался с этой проблемой раньше.В режиме ARC обычно это происходит потому, что компилятор более строг в отношении прямых ссылок, и вам просто нужно включить соответствующий заголовочный файл.
Однако единственный «Protocol.h», который я могу найти, это
#import <objc/Protocol.h>
Импорт этого ничего не делает.Кроме того, добавление импорта в OCProtocolMockObject.h ничего не делает.Есть ли какой-то другой протокол? О котором я не знаю?