У меня есть простой протокол со свойством:
@protocol StopsSource <NSObject>
@property (retain,readonly) NSArray * stops;
@end
Я добавляю наблюдателя значения ключа в другом месте, чтобы прослушать изменения в свойстве "stop":
id<StopsSource> source = ...
[source addObserver:self
forKeyPath:@"stops"
options:NSKeyValueObservingOptionNew
context:nil];
Код работает, как и ожидалось, в том случае, если я изменяю свойство "stop", я получаю события Наблюдение за ValueForKeyPath. Настоящим раздражением является предупреждение компилятора о вызове addObserver:
warning: '-addObserver:forKeyPath:options:context:' not found in protocol(s)
Метод addObserver определен в категории для NSObject:
@interface NSObject(NSKeyValueObserverRegistration)
Есть ли способ заставить XCode сбросить это предупреждение? Насколько я понимаю, протоколы не могут принимать категории, поэтому я не уверен, как включить методы NSKeyValueObserverRegistration в мой протокол, если не считать копирования объявлений в сам протокол, что выглядит как хак.
Я знаю, что это довольно тривиальная проблема, поскольку это всего лишь предупреждение компилятора, но мне интересно знать, существует ли "правильный" способ решения этой проблемы.