私はそれにreadonlyプロパティを持つクラスがあると仮定します。今カスタムプロパティゲッターメソッドを記述すると、ゲッターが別のオブジェクトから値にアクセスして値を返す場合でもKVOは動作しますか?
//MyClass.h
@interface MyClass
@property (readonly) NSInteger MonitorMe;
@end
、のは、このプロパティの点が別のオブジェクト内に、別のプロパティの変更を監視することであり、プロパティが、外部、他の値を検査することによって導出された値を返し、「観察」されたときに想定しますオブジェクト。
//MyClass.m
@implementation
@synthesize MonitorMe;
-(NSInteger) getMonitorMe
{
return globalStaticClass.OtherNSInteger;
}
... Inits and Methods ...
@end
それでは、いくつかは、私はMyClass
オブジェクトのインスタンスを作成してどこで、私はMonitorMe
財産上のKVOオブザーバを追加したいと仮定しましょう。
//AnotherClass.m
@implementation AnotherClass.m
@synthesize instanceOfMyClass;
-(id)init
{
...
instanceOfMyMethod = [MyClass init];
[MyClass addObserver: self
forKeyPath: @"MonitorMe"
options: NSKeyValuObservingOptionNew
context: nil];
...
}
MonitorMe
プロパティのみときglobalStaticClass.OtherNSInteger
の値が変更オブザーバメソッドが実行され、外部オブジェクトの値の変化を監視するので、私の質問は、ですか?また、答えが「はい」の場合、これはどのように行われますか?
これが動作すれば、私にとってコンパイラのブードーのように思えます。
注
私はそれが違いを作るとは思わないが、私はこの実装のためのARCを使用していると私は、iOSデバイス用にコンパイルしています。私は、このタイプの質問に対してOS XとiOSの間にコンパイルの違いがあるのかどうかは疑問ですが、問題がある場合は、上記のような実装が必要なiOSプロジェクトがあります。
また、上で概説した例は、私の実際のニーズの非常に基本的な設定です。 readonlyプロパティの代わりにglobalStaticClass.OtherNSInteger
値に観測値を追加することができます/追加する必要があると主張できます。MonitorMe
私の実際の状況では、私のreadonlyプロパティは私の例よりはるかに複雑なので、答えは十分ではありません。
私は、ARCで "get"という名前のメソッドが問題であることを認識していませんでした。 Yikes、私は今いくつかのコードを書き直す必要があります。ありがとうございました! – RLH
完全に公正であるためには、問題を引き起こすとは絶対に思いませんが、それはCocoaの非常に確立されたコンベンションです。ARCはメソッド名を使用して戻り値の管理について推論します。 –
Jacques:OS X 10.4と10.5に固有のように思われるリンクを投稿しました。この情報はiOS 5.1にも反映されていますか? – RLH