我正在尝试制作一个非常简单的节奏游戏但是卡住了,这就是我得到的:
/**** TouchView.h/m ****/
@property AVAudioPlayer *audioPlayer;
[self addObserver:self
forKeyPath:@"audioPlayer.currentTime"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:NULL];
//audioPlayer.currentTime's type is NSTimeinterval (double)
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change (NSDictionary *)change context:(void *)context
{
NSLog(@"action triggered!")
}
哪个不起作用(我已经正确初始化了audioPlayer,它可以播放声音,但当currentTime值改变时却无法捕获)
我用另一个属性“double testNumber”测试这些代码,将其设置为“keyPath”的参数,当我触摸屏幕时将其增加一,然后效果很好。但是我应该怎么做才能观察到audioPlayer.currentTime,我只想在这个值发生变化时得到通知,任何其他建议也将受到赞赏。我指望你,请帮助我,谢谢:)
答案 0 :(得分:1)
怎么样:
[audioPlayer addObserver:self
forKeyPath:@"currentTime"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:NULL];
但是,如果你真的想要你的对象KVC兼容(这是你试图使用的),你需要关注这个主题的Apple's guide:
为了使某个类符合特定的KVC标准 属性,它必须实现valueForKey所需的方法:和 setValue:forKey:为该属性工作。