私はプロパティを持つ単純なプロトコルがあります。キー値は、プロトコルオブジェクトに観察
@protocol StopsSource <NSObject>
@property (retain,readonly) NSArray * stops;
@end
を私が」への変更を聞くことが他の場所で、キーと値のオブザーバを追加しています「停止」プロパティ:
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メソッドを自分のプロトコルに組み込む方法はわかりません。宣言をプロトコル自体にコピーするのは簡単ではありません。
これはちょっとした問題です。コンパイラの警告ですが、これに対処する「正しい」方法があるかどうかを知りたいと思っています。
を参照してくださいAbizernの答えが、あなたの特定の問題に、 'id'をNSObject * source = ... –