プロパティを持つ単純なプロトコルがあります。
@protocol StopsSource <NSObject>
@property (retain,readonly) NSArray * stops;
@end
「stops」プロパティへの変更をリッスンするために、キーと値のオブザーバーを別の場所に追加しています。
id<StopsSource> source = ...
[source addObserver:self
forKeyPath:@"stops"
options:NSKeyValueObservingOptionNew
context:nil];
「停止」プロパティが変更されたときにobserveValueForKeyPathイベントを取得するという点で、コードは期待どおりに機能します。本当に厄介なのは、addObserver 呼び出しでのコンパイラの警告です。
warning: '-addObserver:forKeyPath:options:context:' not found in protocol(s)
「addObserver」メソッドは、NSObject のカテゴリで定義されています。
@interface NSObject(NSKeyValueObserverRegistration)
XCode でこの警告を削除する方法はありますか? プロトコルがカテゴリを採用できないことは私の理解であるため、宣言をプロトコル自体にコピーする以外に、プロトコルに NSKeyValueObserverRegistration メソッドを組み込む方法がわかりません。これはハックのようです。
これは単なるコンパイラの警告であるという点で、些細な問題であることはわかっていますが、これに対処する「正しい」方法があるかどうかを知りたいと思っています。