私はImageURLObject
オブジェクトを持っています。このオブジェクトにはプロパティがあります。このオブジェクトobjectUrlImage
を作成すると、プロパティobjectUrlImage
は nil になります。画像の URL がまだ設定されていないため、プロパティに実際の値がある場合にセレクターを実行するにはどうすればよいですか? [self performSelector: withObject: afterDelay:]
どの遅延プロパティが nil ではなくなった後かわからないため、メソッドではありません。
質問する
373 次
2 に答える
3
Key-Value Observing (KVO) を使用して、オブジェクトのプロパティの変更を検出できます。
のセッターでは、andImageURLObject
を使用して通知を実行する必要があります。willChangeValueForKey
didChangeValueForKey
- (void)setObjectUrlImage:(NSURL *)url
{
[self willChangeValueForKey:@"objectUrlImage"];
_objectUrlImage = url;
[self didChangeValueForKey:@"objectUrlImage"];
}
そして、どこからでもそのプロパティの観察を確立します。
[imageUrlObject addObserver:self
forKeyPath:@"objectUrlImage"
options:NSKeyValueObservingOptionNew
context:NULL];
観測結果は、次の方法で通知されます。
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if (object == imageUrlObject && [keyPath isEqualToString:@"objectUrlImage"])
{
// URL changed
}
}
dealloc
オブザーバーのメソッドでプロパティの監視を削除することを忘れないでください。
- (void)dealloc
{
[imageUrlObject removeObserver:self
forKeyPath:@"ObjectUrlImage"];
}
dealloc
(これは、ARC 環境でサブクラス化する数少ない理由の 1 つです)。
于 2013-06-07T11:23:21.677 に答える
0
あなたの質問は明確ではありません。しかし、私が正しく理解できれば、プロパティのセッターで必要なことを行う必要があります。
- (void)setObjectUrlImage:(UrlImage *)objectUrlImage {
_objectUrlImage = objectUrlImage;
// Do something here, e.g. post notification, send a message to a delegate...
}
于 2013-06-07T11:11:39.830 に答える