内容简介:翻译自:https://stackoverflow.com/questions/24640017/ios-swift-cmutablevoidpointer-not-recognized-in-observevalueforkeypath
我试图在我的 Swift
类中使用NSObject(NSKeyValueObserving),但我遇到了类型问题. Xcode抱怨它不理解以下代码中’context’参数的CMutableVoidPointer类型:
override func observeValueForKeyPath(keyPath: String!, ofObject object: AnyObject!, change: NSDictionary!, context: CMutableVoidPointer)
我使用CMutableVoidPointer,因为Objective-C定义将’context’参数键入为void *.
我在编译时遇到的确切错误是:“使用未声明的类型’CMutableVoidPointer’”.
我正在使用Xcode Beta 3.
任何帮助,将不胜感激.
根据 Using Swift with Cocoa and Objective-C
,这是当前的最佳实践:
// Add the dynamic modifier to any property you want to observe class MyObjectToObserve: NSObject { dynamic var myDate = NSDate() func updateDate() { myDate = NSDate() } } // Create a global context variable private var myContext = 0 // Add an observer for the key-path, override the observeValueForKeyPath:ofObject:change:context: method, and remove the observer in deinit. class MyObserver: NSObject { var objectToObserve = MyObjectToObserve() override init() { super.init() objectToObserve.addObserver(self, forKeyPath: "myDate", options: .New, context: &myContext) } override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject: AnyObject], context: UnsafeMutablePointer<Void>) { if context == &myContext { println("Date changed: \(change[NSKeyValueChangeNewKey])") } else { super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context) } } deinit { objectToObserve.removeObserver(self, forKeyPath: "myDate", context: &myContext) } }
翻译自:https://stackoverflow.com/questions/24640017/ios-swift-cmutablevoidpointer-not-recognized-in-observevalueforkeypath
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Composer无法识别PHP 7
- AI换脸无法识别?这里有个方法
- 带了个对抗图像块,YOLOv2竟然无法识别我是人……
- Windows Server 2012 R2 WSUS 无法识别 Windows Server 2016 & Windows 10的解决办法
- Windows 10 解决无法完整下载安装语言包(日语输入法无法下载使用)
- ruby-on-rails – 无法推送到github,ssh:无法解析主机名
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。