Swift version: 5.6
By default Swift generates code that is only available to other Swift code, but if you need to interact with the Objective-C runtime – all of UIKit, for example – you need to tell Swift what to do.
If you just want to expose a single method or property, you can mark that method using the @objc
attribute. However, if you want all methods in a class to be exposed to Objective-C you can use a shortcut: the @objcMembers
keyword:
@objcMembers class MyController: UIViewController {
func login() {
}
}
In that code, the login()
method will automatically be exposed to Objective-C in the same way as if it had been marked with @objc
, because the whole class it’s inside is marked with @objcMembers
.
TAKE YOUR SKILLS TO THE NEXT LEVEL If you like Hacking with Swift, you'll love Hacking with Swift+ – it's my premium service where you can learn advanced Swift and SwiftUI, functional programming, algorithms, and more. Plus it comes with stacks of benefits, including monthly live streams, downloadable projects, a 20% discount on all books, and free gifts!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.