Ошибка UIButton click не реализует методSignatureForSelector: - проблема впереди Нераспознанный селектор

В Swift при нажатии кнопки приложение вылетает с ошибкой

не реализует методSignatureForSelector: - проблема впереди Непризнанный селектор

В коде мой класс Controller получает ссылку на UIButton и добавляет цель, как показано ниже.

aButton.addTarget(self, action: "pressed:", forControlEvents: UIControlEvents.TouchUpInside)

Сжатая функция определяется как

func pressed(sender:UIButton)
{
   println("button pressed")
}

Класс контроллера определяется как

class MyController
{
 init()
{
}
// Also here it gets the reference to the UIButton and has pressed function as well.
}

Ответ 1

Проблема, я обнаружил, что класс MyController должен наследовать из класса NSObject. Изменение объявления класса в соответствии с фиксированной моей проблемой.

class MyController : NSObject
{
    override init() // since it is overriding the NSObject init
    {
    }
}

Это, вероятно, потому, что NSObject реализует такие методы, как respondsToSelector. И перед вызовом функции нажата: она пытается проверить, не навешивает ли он инфузу нажатие селектора:. Но поскольку MyController не имеет respondsToSelector, поэтому он сбой.

Ответ 2

Другой вариант - добавить @objc в ваше объявление class.

Я обнаружил, что использование NSTimer сбоев invocations в противном случае.