Swift 使用Objective-C选择器声明方法时出错
当我试图声明一个方法时,出现了以下错误: 代码如下:Swift 使用Objective-C选择器声明方法时出错,swift,xcode7.3,Swift,Xcode7.3,当我试图声明一个方法时,出现了以下错误: 代码如下: NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("itemDroppedOnCharacter:"), name: "onTargetDropped", object: nil) func itemDroppedOnCharacter(notif: AnyObject) { print("Item Dropped On Chara
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("itemDroppedOnCharacter:"), name: "onTargetDropped", object: nil)
func itemDroppedOnCharacter(notif: AnyObject) {
print("Item Dropped On Character")
}
我做错了什么?选择器在Xcode 7.3中发生了更改。您需要显式声明属于类的选择器:
class MyClass {
func someFunc() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.itemDroppedOnCharacter(_:)), name: "onTargetDropped", object: nil)
}
@objc func itemDroppedOnCharacter(notif: AnyObject) {
print("Item Dropped On Character")
}
}
如果不想添加@objc
以将选择器公开给Objective-C,也可以让MyClass
继承自NSObject
:
class MyClass: NSObject {
func someFunc() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MyClass.itemDroppedOnCharacter(_:)), name: "onTargetDropped", object: nil)
}
func itemDroppedOnCharacter(notif: AnyObject) {
print("Item Dropped On Character")
}
}
请注意,发布的代码与屏幕截图中的代码不同(因此会产生不同的警告消息)。有什么区别?我看不到。