Objective c Obj-C:不断观察属性(双值)的变化以触发if';s
我想使用属性currentPlaybackTime,它返回一个双精度值,在电影播放过程中的某些点触发一系列if语句以暂停播放。由于double的近似行为,它永远不会与if语句中的值同步,电影也不会停止。但我不能使用范围,因为当我继续播放时,它可能仍然在范围内,并会立即再次暂停 所以我想我需要做的是将这个双精度值四舍五入到小数点后2位 但是如何观察currentPlaybackTime属性的每次更改?现在,我设置了一个计时器来调用方法,每隔.0333秒(大约每秒30次(我的电影帧率))检查我的if语句和播放时间。Objective c Obj-C:不断观察属性(双值)的变化以触发if';s,objective-c,cocoa,Objective C,Cocoa,我想使用属性currentPlaybackTime,它返回一个双精度值,在电影播放过程中的某些点触发一系列if语句以暂停播放。由于double的近似行为,它永远不会与if语句中的值同步,电影也不会停止。但我不能使用范围,因为当我继续播放时,它可能仍然在范围内,并会立即再次暂停 所以我想我需要做的是将这个双精度值四舍五入到小数点后2位 但是如何观察currentPlaybackTime属性的每次更改?现在,我设置了一个计时器来调用方法,每隔.0333秒(大约每秒30次(我的电影帧率))检查我的if
然而,这是不准确的,我感觉几乎肯定是错的。检查的最佳时机。检查的最佳时机。我不确定您尝试观察的属性属于什么,但必须符合KVO才能使此方法起作用。这并不是每个财产都能得到的
在内部,为您提供
currentPlaybackTime
的代码必须调用willChangeValueForKey:
和didChangeValueForKey:
(如果它使用KVC更改属性,它将免费获得这些调用)。我会检查文档(或代码,如果它是您的),以确保这是可观察的。我不确定您试图观察的属性属于什么,但它必须符合KVO才能使此方法工作。这并不是每个财产都能得到的
在内部,为您提供
currentPlaybackTime
的代码必须调用willChangeValueForKey:
和didChangeValueForKey:
(如果它使用KVC更改属性,它将免费获得这些调用)。我会检查文档(或代码,如果它是您的),以确保这是可观察的。这只是供其他人参考的,因为这是一个旧线程:
不幸的是,
currentPlaybackTime
似乎不符合KVO,因此Hippocrates使用计时器轮询的方法可能是最好的选择仅供其他人参考,因为这是一个旧线程:
不幸的是,currentPlaybackTime
似乎不符合KVO,因此Hippocrates使用计时器轮询的方法可能是最好的选择