0

有没有办法在应用程序的整个生命周期中标记属性或实例变量并查看它的变化?

这个想法是看看属性是如何改变的,当这个值被大量传递时,什么类/对象改变了它的值?这样我们可以在每次更改时看到它的值,而不是用断点填充代码。

4

1 回答 1

0

您不能标记属性或实例变量。但是您可以使用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);
}

从这里您可以跟踪属性/实例变量

于 2013-09-13T06:35:49.530 回答