It's been a busy week. I am still trying to catch up with all those WWDC videos. That's why I want to restrict myself to my personal highlights in this week's blog entry. I divided those into three groups: Xcode 8, iOS 10 and Swift 3.
The new Xcode features can be summarized in extensibility & diagnostic tools:
- Xcode extensions
An official API from Apple to extend Xcode
- Thread Sanitizer
Detects race conditions. It's only available with Swift 3.
- Improved system traces (Instruments)
System traces has been in Instruments for some time. It's got signpost support now which is a feature that allows exact measurements of customizable events
- Improved Static Analyzer
New checks for Localization, Nullability violations and Retain/Release handling (non-ARC) have been added
- Memory graph debugger
The functionality was already available via Xcode's Allocations and Leaks instruments. But by adding support for this directly into the Xcode IDE, finding those pesky bugs just got a lot easier.
- Improved system gauges
Gauges, Introduced in Xcode 6, provided a quick overview of how a running app is performing. UI has been revised to provide more detailed information
- Improved View Debugger
This tool just got faster and better: it provides now information about ambiguous layout
- Run time analysis
Analyzes the app while it is running. Provides information about race conditions, view layout and much more.
iOS 10 is not just a refinement of iOS 9. It's a continuous, straightforward development. It addressed issues that didn't work in the previous version of iOS 9 and improved features that did work by relying on established design guidelines. Let me name just a few of the many new features introduced with iOS 10:
- Usability has been improved e.g. left swipe on lock screen to reach camera is soo much better.
- Revised notification Screen
- Problems that arose with new hardware in previous versions (e.g. 2nd generation Touch ID sensor and Lock screen) have been addressed.
- Copy & Paste synchronization with mac OS sierra
- Voicemail speech transcription
- New Photos memory section that allows you to generate videos from selected photos
- much needed 3D Touch support for a wide range of apps
- Integration of 3rd party apps as first class citizens through CallKit e.g. Skype can be integrated as tight into iOS as Facetime or phone calls..
- Customizable springboard (minor, but nice): finally you can hide unwanted Apple apps you don't need
- revamped, extensible and much improved iMessage
- a lot of new and improved SDKs, to name but a few:
- extensible Mapkit
- extensible Siri through SiriKit (restricted to certain app categories)
- new animation API
- new transition API
- new image render API
I don't want to go into details of Swift 3 here (there is just too much) but we finally see its first official Xcode integration. A lot of functions have been renamed in various frameworks to become more Swift like. Along with that, new Swift Foundation types have been introduced into the language. Apple's engineers went even further. They revised complete APIs like GCD to be more swiftly. Hence we have now a new version of Swift, Swift 2.3, which supports all the new methods, types & frameworks until Swift 3.0 will be officially released.
I am sure I left out a lot. As I said in the beginning there is just so much new information to consume after WWDC. I am honestly quite happy in which direction iOS is moving. In my opinion we don't need every year a new UI. I am absolutely fine with refinements.
My favorite feature in Xcode is the new run time analysis. But I am also eager to play around with the new Systemtrace. I found the video (System Trace in Depth) a little contrived since especially blocking calls can already easily be traced with Time Profiler provided 'Record waiting threads' is enabled. But the new API to visualize custom events with it, is something I always wanted but so far was available to mac apps only.