It might have been a year with a focus on stability and performance but there are still lots of new videos to catch up on. Here are the sessions I found most interesting this year.
Platforms State of The Union?
The Platforms State of the Union is usually a good start for an overview of what’s changed this year across macOS, iOS, watchOS and tvOS. If you are only interested in iOS jump straight to what is effectively the iOS state of the union session:
- Session 202 What’s New in Cocoa Touch Josh Shaffer (no Eliza Block this year) covers what’s new in Cocoa Touch. The choice of topics is interesting: scrolling and memory performance, Auto Layout speed up, the “swiftification” of API’s goes on, NSSecureCoding, notifications, automatic strong passwords, Safe Area (a hint of more devices with a notch maybe?) and Siri Shortcuts.
App Frameworks
Over 30 sessions but these are my recommendations:
-
Session 204 Automatic Strong Passwords and Security Code AutoFill Covers one of the headline features of iOS 12 - the automatic creation of account and strong password credentials and the autofilling of security codes. Tag username and password fields with the correct content types to enable.
-
Session 220 High Performance Auto Layout The good news is that Apple promises a significant speed boost (no code changes required) to Auto Layout in iOS 12. There is also a new instrument to diagnose layout performance issues coming soon. This session covers some of the same ground as the 2015 sessions on Auto Layout with a deep dive into how the layout engine works and the common mistakes such as creating and tearing down constraints in
updateConstraints
. -
Session 224 Core data Best Practises Nothing new here but a good recap on modern Core Data.
-
Session 225 A Tour of UICollectionView A good tutorial on building custom layouts when the flow layout does not meet your needs. See the call to action on animating your collection updates rather than just calling reload data (also applies to table views).
-
Session 235 UIKit Apps for Every Size and Shape Safe area and layout margins, the confusing scroll view adjusted content inset setting and readable Content Guides (iOS 12 changes the default to false for table views).
Some optional App Framework sessions that I liked for when you have more time:
-
Session 201 Creating Apps for a Global Audience Nothing new for iOS 12 here but some good tips on internationalization. I had not seen the tip on using cascade lists for font fallback before.
-
Session 219 Image and Graphics Best Practises Good tips on managing the memory usage of UIImage and UIImageView
-
Session 222 Data You Can Trust If you use NSCoding, NSKeyedArchiver and related classes you should watch this session and migrate to NSSecureCoding. The good news if you use the Swift Coding protocol is that it avoids many of the issues here though complex types still need validation.
-
Session 227 Optimizing App Assets Asset catalog now has a new lossless compression which promises a 15-20% size improvement.
-
Session 228 What’s New in Energy Debugging New Xcode energy logs that report when your released (App Store or TestFlight) App has excessive energy use.
Siri Shortcuts
Maybe the big new feature of the year but also maybe less than many hoped for.
To dig deeper:
Swift
The Swift 4.2 changes are not news but it is always good to have an Apple engineer explain what it means:
-
Session 401 What’s New in Swift A round up of some of the main changes. See also Ole Begemann’s What’s new in Swift 4.2 playground.
-
Session 223 Embracing Algorithms Crusty is back! A beautiful talk by Dave Abrahams. Find some time to watch it.
-
Session 406 Swift Generics Not as scary as I feared a helpful review of generics.
-
Session 229 Using Collections Effectively A review of the Collection protocol.
Developer Tools
Xcode 10 is here:
-
Session 402 Getting the Most out of Playgrounds in Xcode Interesting change to make playgrounds execute incrementally. Should make them faster as you do not need to re-run the entire playground every time.
-
Session 403 What’s New in Testing Xcode 10 can run tests in parallel and in random order.
-
Session 404 New Localization Workflows in Xcode 10 New localization file format (xcloc) that extends XLIFF to include screenshots, notes and non-string assets.
-
Session 405 Measuring Performance Using Logging new os_signpost logging that lets you annotate critical code and then analyze in Instruments.
-
Session 408 Building Faster in Xcode A deep dive into the Xcode build system. See the tip about turning off Whole Module Optimization for debug builds.
-
Session 410 Creating Custom Instruments Create a custom instrument for your App or framework so that developers not familiar with the code can understand how it is performing.
-
Session 412 Advanced Debugging with Xcode and LLDB Great debugging tips.
-
Session 414 Understanding Crashes and Crash Logs A deep dive into crash logs.
-
Session 416 iOS Memory Deep Dive An explanation of how iOS uses memory and how to profile it. Some overlap with Session 219 on image memory use.
-
Session 417 Testing Tips & Tricks Tips on testing URLSession, notifications, mocking with protocols and improving test execution times.
Accessibility
-
Session 226 VoiceOver: App testing Beyond the Visuals A good pitch for why you should support VoiceOver - it makes your App better for everybody.
-
Session 230 Deliver an Exceptional Accessibility Experience Nice to see a session that covers more than the basics of supporting VoiceOver including what annoys me most, small fonts and low contrast colors.
System Frameworks
- Session 710 What’s New in User Notifications Grouped notifications, better notification management for the user, critical alerts and quiet delivery (without prompting for user authorization).
Two sessions on low level networking and the new Network framework which you should use instead of BSD sockets. Also repeated advice to stop using reachability (SCNetworkReachability) and adopt the waitsForConnectivity NSURLSession API introduced in iOS 11.
Machine Learning And Augmented Reality
CoreML and ARKit were big news last year and get some incremental improvements this year:
-
Session 602 What’s New in ARKit 2 ARKit 2 updates.
-
Session 703 Introducing Create ML Apple brings training to Xcode with CreateML. Nothing new to the machine learning world but nice to have it integrated.
The changes to CoreML in two sessions:
A new framework:
- Session 713 Introducing Natural Language Framework A reworking of the NSLinguisticTagger into a new Natural Language Framework with a Swiftier API.
Object tracking and building image classifiers:
-
Session 716 Object Tracking in Vision new face detector algorithm handles more faces and is orientation agnostic.
-
Session 717 Vision with CoreML Nice gentle walk-through of building custom image classification (croissant not included).
App Store
-
Session 301 What’s New in App Store Connect The big App Store news is that iTunes Connect is no more. Long live App Store Connect. There is a new iOS App, a new REST API and the developer and connect web sites are merging soon. This session also covers doing free trials for paid apps (see also Daniel Jalkut on free trials).
-
Session 704 Best Practises and What’s New with In-App Purchases StoreKit updates including using introductory pricing for subscriptions.
Apple Watch
-
Session 206 What’s New in watchOS Some useful updates to watchOS. It gets the new grouped, critical and quiet notifications, Siri shortcuts, a new Workout API and local audio playback.
-
Session 504 Creating Audio Apps for watchOS Background local audio on the watch!
-
Session 707 New Ways to Work with Workouts The new workout API.
Design
I did not find the design sessions this year as engaging as last year. (That is no fault of the presenters I am sure). The two I liked the best:
Graphics and Games
Not my area of interest so I can’t make recommendations on the many sessions for Metal developers though I guess Session 604 Metal for OpenGL Developers is of interest to some now that Apple has deprecated OpenGL.
Want More Videos?
If you still need to catch up on what Apple introduced in iOS 11 and iOS 10 take a look at my WWDC recommendations from the last two years: