相关疑难解决方法(0)

使用Swift添加没有指针的KVO观察者

在Objective-C中,我通常会使用这样的东西:

static NSString *kViewTransformChanged = @"view transform changed";
// or
static const void *kViewTransformChanged = &kViewTransformChanged;

[clearContentView addObserver:self
                       forKeyPath:@"transform"
                          options:NSKeyValueObservingOptionNew
                          context:&kViewTransformChanged];
Run Code Online (Sandbox Code Playgroud)

我有两个重载方法可供选择,为KVO添加一个观察者,唯一的区别是context参数:

 clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, context: CMutableVoidPointer)
 clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, kvoContext: KVOContext)
Run Code Online (Sandbox Code Playgroud)

由于Swift不使用指针,我不确定如何取消引用指针以使用第一种方法.

如果我创建自己的KVOContext常量以便与第二种方法一起使用,我最终会问它:

let test:KVOContext = KVOContext.fromVoidContext(context: CMutableVoidPointer)
Run Code Online (Sandbox Code Playgroud)

编辑:CMutableVoidPointer和KVOContext有什么区别?有人可以给我一个例子,说明如何使用它们以及何时使用它们?

编辑#2:苹果公司的开发人员刚刚将这个发布到了论坛:KVOContext正在消失; 使用全局引用作为您的上下文是现在的方法.

pointers key-value-observing swift

23
推荐指数
3
解决办法
2万
查看次数

标签 统计

key-value-observing ×1

pointers ×1

swift ×1