原始指针的观察值
Observing values for a primitive pointer
我有一个 class 和一个 属性
@property (nonatomic) double* myDoubles
这个属性有3个双打
myDoubles[0]; //0.02
myDoubles[1]; //0.42
myDoubles[2]; //0.99
如果值发生变化,我希望调用以下方法
[self setNeedsDisplay];
我试过使用 FBKVOController,但是没用..
_observer = [FBKVOController controllerWithObserver:self];
[_observer observe:self
keyPath:@"myDoubles"
options:NSKeyValueObservingOptionNew
action:@selector(setNeedsDisplay)];
我不想启动 NSTimer 而只是检查更改。
这是不可能的。
通知之所以有效,是因为进行更改的代码通过某种知道通知侦听器更改的方法来执行此操作。如果相同的代码只是写入支持数据的内存位置,则永远不会触发通知。
您要做的只是声明一个代码将写入的内存位置;由此不会发生任何通知(除非您有非常依赖于系统的支持使其成为可能 - 内存观察点 - 然后您的问题会发生重大变化。这种支持(如果可用)非常有限并且没有很好的通用价值)。
我有一个 class 和一个 属性
@property (nonatomic) double* myDoubles
这个属性有3个双打
myDoubles[0]; //0.02
myDoubles[1]; //0.42
myDoubles[2]; //0.99
如果值发生变化,我希望调用以下方法
[self setNeedsDisplay];
我试过使用 FBKVOController,但是没用..
_observer = [FBKVOController controllerWithObserver:self];
[_observer observe:self
keyPath:@"myDoubles"
options:NSKeyValueObservingOptionNew
action:@selector(setNeedsDisplay)];
我不想启动 NSTimer 而只是检查更改。
这是不可能的。
通知之所以有效,是因为进行更改的代码通过某种知道通知侦听器更改的方法来执行此操作。如果相同的代码只是写入支持数据的内存位置,则永远不会触发通知。
您要做的只是声明一个代码将写入的内存位置;由此不会发生任何通知(除非您有非常依赖于系统的支持使其成为可能 - 内存观察点 - 然后您的问题会发生重大变化。这种支持(如果可用)非常有限并且没有很好的通用价值)。