Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Obj-C:不断观察属性(双值)的变化以触发if';s_Objective C_Cocoa - Fatal编程技术网

Objective c Obj-C:不断观察属性(双值)的变化以触发if';s

Objective c Obj-C:不断观察属性(双值)的变化以触发if';s,objective-c,cocoa,Objective C,Cocoa,我想使用属性currentPlaybackTime,它返回一个双精度值,在电影播放过程中的某些点触发一系列if语句以暂停播放。由于double的近似行为,它永远不会与if语句中的值同步,电影也不会停止。但我不能使用范围,因为当我继续播放时,它可能仍然在范围内,并会立即再次暂停 所以我想我需要做的是将这个双精度值四舍五入到小数点后2位 但是如何观察currentPlaybackTime属性的每次更改?现在,我设置了一个计时器来调用方法,每隔.0333秒(大约每秒30次(我的电影帧率))检查我的if

我想使用属性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使用计时器轮询的方法可能是最好的选择