2011-03-15 47 views
1

你好,我对iPad编程非常新颖。任何人都可以解释如何在iPad中使用关键值观察器。我需要检查一个特定的变量值是否发生了变化,并基于此我触发一种方法。一种方法是使用NSTimer连续检查变量值,但我知道这可以通过使用关键值观察员更好地完成,因此请帮助我理解关键值观察者概念。预先感谢关于iPad中的关键值观察者

+0

你可以更具体:你想观察哪个对象的哪个属性? – Jilouc 2011-03-15 16:25:20

+0

嗨Jilouc。我有一个NSNumber对象,其值在类的不同方法中多次更改,我希望每次更改NSNumber的值时调用一个方法。 – Hariprasad 2011-03-16 11:50:27

回答

2

假设您已声明财产@property (retain) NSNumber myNumber;在您的界面。
然后您可以观察KVO的值变化。

观察变化(把这个在您的init方法为例)

[self addObserver:self forKeyPath:@"myNumber" options:NSKeyValueObservingOptionNew context:nil]; 

然后实现下面的方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    if ([keyPath isEqualToString:@"myNumber"]) { 
     // do stuff here 
    } 
} 

和删除观察者在dealloc方法:

[self removeObserver:self forKeyPath:@"myNumber"]; 

您可以参考Key-Value Observing Programming Guide获取更多信息mation。

+0

谢谢Jilouc希望这能解决我的问题。 – Hariprasad 2011-03-16 13:04:00