2012-04-07 3 views
0

나는 모든 구현자가 프로토콜을 읽기 전용 속성을 구현하도록하고있다. 이것은 내 시도입니다 :Objective-C에서 속성을 사용하여 프로토콜을 정의하는 방법은 무엇입니까?

@protocol Foo 
@property(readonly) BOOL isPending; 
@end 

@interface Bar <Foo> 
@end 

@implementation Bar 
- (BOOL) isPending { 
    return NO; 
} 
@end 

왜 프로토콜 파일에서 경고가 표시됩니까?

재산권 'isPending는'방법 'isPending은'그것은 프로토콜의

을 정의 할 필요! 프로토콜은 기능을 구현하지 않아야합니다! 프로토콜을 구현하는 클래스는 함수를 구현해야한다.

+2

일반적으로 (규칙에 따라)이 속성을 @property (readonly, getter = isPending)로 선언하겠다. BOOL pending; ' –

답변

1

신고하신 문제를 Xcode 4.3.2에서 재현 할 수 없습니다. Foo을 구현할 것을 선언했지만 isPending에 getter를 추가하지 않았습니까? 진단은 @property 대신 - (BOOL) isPending을 프로토콜에 추가하고 차이가 있는지 확인하는 것입니다. 완전히 선언 된 getter 및 setter가있는 경우에도 도트 구문을 사용할 수 있으므로 프로그램의 다른 부분과 구문상의 차이를 만들어서는 안됩니다.

+0

+1'Foo를 구현하기 위해 뭔가를 선언했지만 getter isPending' –

+0

@ Paul.s에 대한 경고는 Foo가 아니라 프로토콜에서 발생합니다. Foo에는 isPending에 대한 getter가 있습니다. – JoJo

+0

Xcode가 재생됩니까? 파생 된 데이터를 제거하고 정리를 시도해보십시오 ... –

관련 문제