【发布时间】:2014-08-02 06:15:00
【问题描述】:
在 Objective-C 中,我通常会使用这样的东西:
static NSString *kViewTransformChanged = @"view transform changed";
// or
static const void *kViewTransformChanged = &kViewTransformChanged;
[clearContentView addObserver:self
forKeyPath:@"transform"
options:NSKeyValueObservingOptionNew
context:&kViewTransformChanged];
我有两种重载方法可供选择来为 KVO 添加观察者,唯一的区别是上下文参数:
clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, context: CMutableVoidPointer)
clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, kvoContext: KVOContext)
由于 Swift 不使用指针,我不确定如何取消引用指针以使用第一种方法。
如果我创建自己的 KVOContext 常量以用于第二种方法,我最终会要求这样做:
let test:KVOContext = KVOContext.fromVoidContext(context: CMutableVoidPointer)
编辑:CMutableVoidPointer 和 KVOContext 有什么区别?谁能给我一个例子,如何同时使用它们以及何时使用它们?
编辑#2:Apple 的一位开发人员刚刚在论坛上发布了这个:KVOContext 即将消失;使用全局引用作为您的上下文是现在的方法。
【问题讨论】:
-
您是在问如何创建 CMutableVoidPointer?
-
我已经编辑了我的帖子以更准确。
标签: pointers swift key-value-observing