내가 속성을 가진 간단한 프로토콜이 있습니다키 - 값은 프로토콜 개체에 관찰 : 컴파일러 경고를 addObserver에 :
@protocol StopsSource <NSObject>
@property (retain,readonly) NSArray * stops;
@end
내가 다른 곳에서 변경을 듣고 키 - 값 관찰자를 추가 해요을 " 속성이 변경됩니다 "중지"는 점에서 예상대로 때
id<StopsSource> source = ...
[source addObserver:self
forKeyPath:@"stops"
options:NSKeyValueObservingOptionNew
context:nil];
코드 내가 observeValueForKeyPath 이벤트를 가져 작품 속성을 "중지합니다. 'addObserver'메서드는 NSObject의에 범주에 정의되어
warning: '-addObserver:forKeyPath:options:context:' not found in protocol(s)
:
@interface NSObject(NSKeyValueObserverRegistration)
이 경고를 드롭 엑스 코드를 얻을 수있는 방법이 있나요 진짜 짜증은 addObserver 호출에서 컴파일러 경고입니다 ? 프로토콜이 카테고리를 채택 할 수 없다는 것을 이해하고 있으므로 NSKeyValueObserverRegistration 메소드를 내 프로토콜에 가져 오는 방법을 잘 모르겠습니다. 선언문을 프로토콜 자체에 복사하는 것보다는 해킹처럼 보입니다.
저는 이것이 컴파일러의 경고 일 뿐이라는 사소한 문제라는 것을 알고 있습니다 만,이 문제를 해결하는 "올바른"방법이 있는지 알고 싶습니다.
참조 Abizern의 대답하지만, 특정 문제에 대한 , 'id'을 NSObject로 바꿉니다 * source = ... –