Я не уверен, что кто-нибудь прокрутит достаточно далеко, чтобы увидеть этот ответ, но так как это самый популярный вопрос по этому вопросу, а ответа там не было, я добавлю его:
Начиная с Xcode 9 / Swift 4 все методы Objective-C должны быть отмечены @objc
. Компилятор делает разумную работу по распознаванию того, где он должен применяться, однако он не определяет наследование. Например:
class Delegate: NSObject, UITableViewDelegate {
}
class SuperDelegate: Delegate {
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { return indexPath }
}
Это не вызовет никаких предупреждений, сбоев или сборок. Однако ваша линия не будет вызываться, пока вы не добавите @objc
:
@objc class SuperDelegate: Delegate {
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { return indexPath }
}