One unwelcome quirk of Swift before 2.2 was that selectors could be written as strings, like this:
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Tap!", style: .Plain, target: self, action: "buttonTaped")
If you look closely, I wrote "buttonTaped"
rather than "buttonTapped"
, but Xcode wasn't able to notify me of my mistake if either of those methods didn't exist.
This has been resolved as of Swift 2.2: using strings for selectors has been deprecated, and you should now write #selector(buttonTapped)
in that code above. If the buttonTapped()
method doesn't exist, you'll get a compile error – another whole class of bugs eliminated at compile time!
BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Download all Swift 2.2 changes as a playground Link to Swift 2.2 changes
Link copied to your pasteboard.