2
방금 Xcode 버전 4.3.2 (4E2002)로 업그레이드했습니다. 난 모의 수업을 수동 메모리 관리에서 ARC로 변환하고있다.OCMock 클래스를 ARC로 변환 할 때 forward 선언 오류가 발생했습니다.
는 코드는 다음과 같습니다
@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'에 대한'@ 인터페이스 '는 어떻게 생겼습니까? –
특별한 것은 없습니다. 그것을 포함하도록 업데이트되었습니다. (OCMockObject도 Protocol을 사용하지만 거기에는 아무것도 포함하지 않습니다.) – nont
요즘 프로토콜은 요즘에만 선언되었습니다. 이로 인해 이전에 다른 문제가 발생했습니다. https://github.com/erikdoe/ocmock/pull/7에있는 의견을 참조하십시오. 내 라이온 시스템에서 새 버전으로 업그레이드해야 이중 확인이 가능합니다. –