It’s been nearly two years since Apple debuted Swift, its successor to Objective-C for iOS and OS X development, and since then the Swift language has evolved considerably. When Swift was first announced, fans and developers were overjoyed. Objective-C was notorious for its overly verbose syntax and general scariness for new app developers, while Swift was much cleaner and modern without sacrificing any meaningful functionality. However, most professionals, including the crew here at LunarLincoln, hesitated to adopt Swift at its inception. The language, though shiny and new, was unstable and still maturing.
Each Swift update brought forth the risk of breaking your existing code. While Swift was incredibly fun for personal projects and smaller endeavors, it didn’t meet our needs for full-scale production. How would we explain to clients that we couldn’t complete a simple bug fix without totally updating their codebase to work with the latest version of Swift?
One year later – Swift 2.0
Apple open sourced the Swift programming language and implemented a heap of critical missing features like exception handling and protocol extensions. The language had matured immensely in just one year and we felt it was finally ready for production use.
As of now, we’re still transitioning ourselves to a Swift mentality. We’re doing our best to write all our new classes in Swift which is introducing all kinds of interesting problems that come with managing Objective-C and Swift in the same codebase.
While I still consider myself to be a Swift noob, I have to say I’m already a huge fan. I love no longer needing to import class headers or having header files at all. Wrapping my head around Optionals (pun intended) took a small bit of effort but using them in practice is helping me think about test cases I might have previously not considered. Objective-C is still a crucial skill for even new iOS and OS X developers due to the sheer vastness of online resources, but I feel that it will slowly be phased out over the next few years.
And now I want to seize the low-hanging fruit that’s been dangling in front of me for this entire blog post.