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
.
SPONSORED From March 20th to 26th, you can join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer!
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.