My first WWDC as an attendee has come and gone, but the fun doesn’t stop there. There are plenty of changes and new APIs to keep developers busy. In my second post, I dive into the new Drag and Drop API. In my third post, I explore the new Core ML framework.
The keynote set the tone, packed with content and minimal filler. Still not sure at this point how High Sierra being a “totally baked” OS wasn’t simply a joke before announcing the real name, but I digress. As far as OS updates go, improvements in iOS 11 specifically for iPad will hopefully give the platform some new life. It was exciting to see new hardware, but as with all WWDCs the new software and frameworks were the highlight of the show. From refinements in Swift 4 to new and awesome frameworks like ARKit and CoreML, there is a lot to be excited about as an iOS/Mac developer in 2017.
The Platforms State of the Union laid out the focus this year on “technology fundamentals and refinements”. Some of the refinements in Xcode 9 really stood out to me – finally, refactoring! Not only is it great to finally have the ability to refactor Swift code, but the refactoring tools are great to work with. Renaming a variable collapses the editor to show you what code will be affected by the change, even showing you storyboard changes if the variable is an IBOutlet.
With refactoring, the command button has become much more powerful in Xcode 9. Along with the refactoring support, Apple has also been focusing on helping you write better code. One specific area is the runtime sanitizers. This year, they introduced an Undefined Behavior Sanitizer and the Main Thread API Checker. Hopefully we can now avoid calling UI methods on the background thread 100% of the time
Refining Swift 4
Another big takeaway from the State of the Union is related to Swift 4. For those who have suffered through previous Swift conversions, the conversion to Swift 4 promises to be an easier one. Xcode 9 ships with a new Swift 3.2 version that will allow you to convert parts of your code to Swift 4, instead of all at once. Anyone who has converted a large codebase before will understand how great this feature is.
One API that was introduced in the Platforms State of the Union as “the most important new API” was drag and drop. This API showed up again in What’s New in Cocoa Touch and multiple other sessions dedicated specifically to the new API. It is obvious that iPad productivity is of high importance and Apple would like all developers to support this feature. Makes sense, considering it is a feature that gains the most benefit because many apps implement it.
There was much more presented in the Platforms State of the Union (like wireless development and github integration!), so I would recommend you watch the entire thing if you have not done so already.
What’s New in Swift included a reference to a playground that Ole Begemann created, which really is great. One of the new protocols that was not actually included in this section (but instead discussed in What’s New in Foundation) was the Codable protocol. This allows you to define how you would like a class, struct, or enum to be achieved and serialized. Once you add conformance (and provide customization to CodingKeys as necessary), JSONEncoder and JSONDecoder make it super simple to convert between the two.
Other improvements centered around pinpoints for many developers, which is where I think the community input has helped guide some important changes. Not necessarily the big jump we have seen in previous versions, but I think that is a good thing.
The most impressive new frameworks introduced were around machine learning and augmented reality. On the machine learning front, CoreML takes care of the heavy lifting and lets developers focus on building unique experiences with the technology. You can now easily build your own “Not Hotdog” app with one of the readily available CoreML models (one of the more popular jokes of the conference). I will need some more time to process all of the possibilities around AR, but it is great that Apple is on board and is providing tools to help developers create new things in the space.