我正在使用与xCode7 Beta 2兼容的代码。刚刚获得Beta 3,现在我遇到了这个似乎是xCode错误的问题?
对于我的一个公开课......
override public func observeValueForKeyPath...
错误:方法不会覆盖其超类中的任何方法
所以我拿出“覆盖”:
public func observeValueForKeyPath
错误:方法与具有相同Objective-C选择器的超类NSObject中的方法冲突
哈!我被第一个错误骗了。不会以任何方式编译。
有什么帮助吗?
答案 0 :(得分:30)
如果从NSKeyValueObserving.h
复制定义,您的覆盖将如下所示。
iOS SDK 9.0
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
//...
}
iOS SDK 9.0之前
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject: AnyObject], context: UnsafeMutablePointer<Void>) {
// ...
}
注意:对于像这样的方法,您通常可以按Cmd+Shift+O
直接进入快速打开... 弹出字段,其中有任何定义可以复制/粘贴,Xcode将在项目/ SDK中搜索它。在这种情况下,请注意iOS范围。
答案 1 :(得分:22)
将声明中的[NSObject:AnyObject]
更改为[String:AnyObject]
。