アプリケーションの存続期間中、プロパティまたはインスタンス変数にタグを付けて変更を確認する方法はありますか?
アイデアは、プロパティがどのように変更されるか、およびその値が頻繁に渡されるときにどのクラス/オブジェクトがその値を変更するかを確認することです。このようにして、コードをブレークポイントで埋める代わりに、値が変更されるたびにその値を確認できます。
アプリケーションの存続期間中、プロパティまたはインスタンス変数にタグを付けて変更を確認する方法はありますか?
アイデアは、プロパティがどのように変更されるか、およびその値が頻繁に渡されるときにどのクラス/オブジェクトがその値を変更するかを確認することです。このようにして、コードをブレークポイントで埋める代わりに、値が変更されるたびにその値を確認できます。
プロパティまたはインスタンス変数にタグを付けることはできません。ただし、Key-Value Observing(KVO)
for プロパティ/インスタンス変数を作成して、古い値と新しい値の変更を見つけることができます。KVO
プロパティまたは値の変更を観察できます。
たとえば、このように特定のプロパティ/インスタンス変数にオブザーバーを設定すると、
[self addObserver:self forKeyPath:@"object.sampleInstance" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
このようにそのプロパティに変更を加えたときはいつでも
[object setSampleInstance:@"Hai"];
呼び出します
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
id newVal = (id)[change objectForKey:NSKeyValueChangeNewKey];
id oldVal = (id)[change objectForKey:NSKeyValueChangeOldKey];
NSLog(@"KVO new %@", newVal);
NSLog(@"KVO old %@", oldVal);
}
これから、プロパティ/インスタンス変数をトレースできます