Атрибут @objc предоставляет Swift-объявления Objective-C runtime, что позволяет использовать динамическую диспетчеризацию и взаимодействие между языками.
@objc#selector, например в паттернах target-action с UIButtondynamic, используя @objc dynamic, чтобы сделать свойства наблюдаемыми через Key-Value Observing@IBAction и @IBOutlet неявно применяют @objc для подключения UI-элементов в .xib или storyboard-файлах@objcclass MyViewController: UIViewController {
// Предоставлено для использования с #selector
@objc func handleTap() { }
// Наблюдаемо через KVO
@objc dynamic var score: Int = 0
}
let button = UIButton()
button.addTarget(self, action: #selector(handleTap), for: .touchUpInside)
@objc работает только с членами классов, наследующих NSObject, или с самими классамиstruct и enum в Swift не могут быть напрямую доступны через @objc, так как в Objective-C нет эквивалентной концепцииИспользуй @objc всякий раз, когда Swift-объявление должно быть видно Objective-C runtime — будь то для selectors, KVO, Interface Builder или прямого взаимодействия с Objective-C.
Атрибут @objc требуется, когда ты используешь #selector() для ссылки на метод в паттернах target-action, например с UIButton.addTarget(_:action:for:).
Новый — ещё не проверен сообществом
Вы