2016-04-07 3 views
0

я получаю эту ошибку, когда я пытаюсь объявить метод:Ошибка объявляя метод с селектором Objective-C

no method declared with objective-c selector

Вот код:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("itemDroppedOnCharacter:"), name: "onTargetDropped", object: nil) 

func itemDroppedOnCharacter(notif: AnyObject) { 

    print("Item Dropped On Character") 

} 

Что я делаю неправильно ?

+0

Обратите внимание, что размещенный код * отличается * от значения на снимке экрана (и, следовательно, вызывает другое предупреждающее сообщение). –

+0

В чем разница? Я не вижу этого. – i6x86

ответ

0

Селекторы изменены с помощью 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") 
    } 
} 

Вы также можете иметь MyClass наследовать от NSObject, если вы не хотите, чтобы добавить @objc выставить селектор Objective-C:

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") 
    } 
}