If you weren’t lucky enough to get a “golden ticket” to WWDC this year, catching up with the videos can be quite a challenge. There are over 120 of them available on the WWDC 2016 Videos site!
This year introduced a ton of new goodies for developers, notably SiriKit, iMessage Apps, the new Xcode 8 Memory Debugger, and much more.
Wondering which videos are the best “bang for your buck” with your limited amount of learning time? The Tutorial Team and I have assembled this list of what we consider to be the Top 10 WWDC 2016 videos.
1) Platforms State of the Union
If you only have time for one video, this is it!
For developers, the real start of WWDC is the Platforms State of the Union session. The Keynote is a fluffy offering to surprise and delight the general public, investors and Apple faithfuls. The State of the Union, in contrast, is where the really interesting details come out.
This talk surveys the new technologies and outlines which sessions will provide more details on each technology. Highlights of the 2016 Platforms State of the Union include:
- Extensions bring many features of the four platforms are available to developers.
- SiriKit and Messages have been opened up for use in your apps, along with enhancements to SpriteKit, SceneKit, AppKit, Core Data and GameplayKit.
- watchOS 3 promises unheard of speed, background app refresh, inline video, SpriteKit and SceneKit.
- Swift Playgrounds on the iPad was the biggest surprise. Positioned as educational tool, it’s now possible to write actual code and apps on the iPad.
There are many more new items covered in the Platform State of the Union than I can address in this article. If you watch no other WWDC 2016 session video, this is definitely the one you want.
2) What’s New in Swift
One change that will affect every developer is the upcoming release of Swift 3, which brings some significant changes. If you’ve been following the Swift Evolution project closely, you can skip this session as you already know what’s coming, but if you haven’t this session is well worth watching.
The session begins by looking at the state of Swift and its open source development. Swift 3.0 is the first release of the Swift Evolution open source project. The aim is to make Swift open and transparent, develop it under a strict code of conduct and release it with a permissive license.
The bulk of the session covers what’s new in Swift 3, with the major change being the “Swift-ification” of Apple APIs. The session highlights the new naming conventions, reduced redundancies and the benefits of using structs over strings in enumerations.
In addition, many changes have taken place in the semantics of Swift. Highlights include: improved syntax, type systems, improved implicitly unwrapped optionals, changes in the standard library, numerics and dictionaries using strings. Whole module optimization is on by default and the compiler now caches as much as possible.
Of course, to help the migration of your code easier, Xcode 8 includes a handy Swift Migrator tool. Apple encourages developers to update their code and get ready for the Fall release.
“We asked ourselves, if some things were not already in Swift, would we add them? Often the answer is no.” – Chris Lattner
3) What’s New in watchOS 3
The Apple Watch, while having a high adoption rate among the faithful, has suffered from poor performance. Many developers have turned away from it, hoping that Apple would remedy the experience for users. It appears that with watchOS 3 they have done just that!
With new features like background refresh and some under-the-hood tinkering, Apple claims to improve performance by 70%. By creating app snapshots, each app can be pre-loaded into memory so that apps snap open immediately.
Game developers have wondered about using the watch for game development as well. watchOS 3 brings SpriteKit and SceneKit integration, as well as inline video and speaker access with AVFoundation. Network access and CloudKit sharing in the background are also new. Adding this to the digital crown, gyroscope, and gesture recognizers means “game on”.
Glances have been rolled into the much more accessible and interactive Dock. Complications and ClockKit will allow developers to create unique experiences. This session video delves into these items and few more.
If you’re interested in writing watchOS apps, this session is a must see.
4) Improving Existing Apps with Modern Best Practices
“Each bug is a unique snowflake”
This session got plenty of upvotes, especially from the seasoned developers. The talk offers straight-up advice applicable to almost any app:
- Set Minimum Version. At the time I’m writing this, 95% of devices are running either iOS 8 or iOS 9. So step one is to set your minimum version to 8.4 and take advantage of the improvements offered by Apple. When iOS 10 ships, set the minimum version to 9.3. Use the Issue Navigator to fix all those warnings and update the deprecated methods. You can even turn on “treat warnings as errors” – just pretend Chris Lattner is reviewing your code! :]
- Adopt Accessibility. It’s critical to make sure your apps work for user who cannot see your impressive graphics. Be aware of locale-related elements, such as date and number formats.
- Use the Migrator. Use the new Swift Migrator to migrate your code to Swift 3 and test the results. File bug reports and tell Apple what didn’t work.
- Use Asset Catalogs. Asset Catalogs can make your app more performant and better-looking on multiple devices.
- Use Dependency Injection. This is a good way to pass items around between your view controllers, in prepareForSegue() and with an unwind segue. You could also do what Apple does and employ protocols.
These are just a few tips – this session is chock full of many more. This is a great session for anyone developing apps.
5) What’s New in Cocoa Touch
This is a more focused look at the enhancements to Cocoa Touch surveyed in the Platform State of the Union. The session starts with a discussion of what’s been introduced since the last WWDC in 2015: the iPad Pro, the Apple Pencil, the Smart Keyboard, and 3D Touch. We already have the tools and we can take advantage of adaptability to build for larger devices, with Traits, Size Classes and size-based layouts.
Next, the session looks at the core technology improvements. First, Swift 3 with its additional first argument to give functions greater clarity. GCD now has a full object API allowing greater control over objects in the queues. Foundation in Swift has dropped some of the redundant naming as well as converting reference types into value types. For example, DateComponents, and colors properties dropping UIColor from the name.
The Wide Color support starts the look at image handling and the new UIGraphicRenderer class. The session highlights the benefits of Asset Catalogs, the Accessibility Inspector, and improvements in speech recognition, enhanced Dynamic Type and Text input. Customizable Peek & Pop is also previewed, as are new features in UICollectionView and its parent UIScrollView class.
This is a really important overview and points out many more ways that iOS is changing.
6) Protocol and Value Oriented Programming in UIKit Apps
Last year’s Protocol Oriented Swift was the breakout sensation from WWDC 2015. This year’s session follows up with an application of protocols and value types in a model-view-controller application. Based on local reasoning as clearer way of understanding a large code base, the speakers break down how to use these principles and preserve objects in the code. Rather than duplicating code, by adding common objects as structs to protocols, normally dissimilar classes can share properties.
The session covers how to use composition of values rather than inheritance to maintain local reasoning. Elements used as lightweight structs can be leveraged without the worry of what the super class is doing or what a subclass may override. Using protocol-oriented code makes testing objects possible as well. UIView and SKView classes can conform to a protocol that serves up a common layout property such as a frame.
The use of associated types makes protocols even more powerful, and using structs in logic makes it possible to test view elements without the GUI. This session provides simple yet effective analogies to show how protocol and value-oriented programming in Swift is both powerful and simplifies the tasks in your apps.
7) What’s New In GameplayKit
At WWDC 2015, Apple introduced GameplayKit, their sophisticated tooling for building games. GameplayKit introduced seven major systems and this year they’ve added improvements to Agents, Pathfinding and Game AI. New this year is the addition of a new Spacial Partitioning, Procedural Generations and access to all the tools right inside Xcode.
Pathfinding now utilizes triangulation rather than line of sight to navigate obstacles. This can be edited graphically in Xcode. Agents, groups of player nodes, can now be used in 2D as well as 3D games. Spacial Partitioning allows objects to be grouped by proximity.
Procedural Generations is really cool. You can create game elements on the fly by applying various noise theories, combining them to create coherent randomness and apply the elements to generated environments. For example, applying one type of noise to terrain, with another applied to temperature, lets you easily create deserts, tundra and savannas.
Game AI builds on last year’s MinMax modeling and introduces Monte Carlo strategy. Game decisions are made quickly, and decision trees can be traversed with low overhead. Xcode Editor integration brings entity and component editors, along with Navigation graph editing for Pathfinding and scenes outline view. There’s even a state machine quick-look tool built-in.
GameplayKit greatly enhances your ability to create compelling games. If you are making games, or learning to make games, this session has the tools for you.
8) Introducing Swift Playgrounds
Ever since I got my iPad 1.0, I have wanted to write code on it. I have tried out just about every app there is that provides some type of code writing functionality and even app layout tools.
Playgrounds in Xcode have been a great way for developers to quickly flesh out ideas and eventually build that code into their apps, so I was super excited to see the announcement of Swift Playgrounds for iPad in iOS 10, which puts the power of Swift into the hands of all budding and seasoned developers.
During the Platform State of the Union and in the Keynote, you’re shown the basics of Swift Playgrounds. Apple is positioning the tools as a springboard for education and provides beautiful lessons to teach coding principles. This session digs a bit deeper and further demonstrates the full power of Swift Playgrounds.
Last year Playgrounds in Xcode got multipage support and the ability to share source code and assets. Swift Playgrounds for iPad also makes use of these conventions. The session delves into how you can author playground lessons and presentations yourself. The speakers demonstrate the underlying structure as well as some tips, tricks and best practices for authoring.
Swift Playgrounds are great for trying out code ideas to explore the iOS SDK, APIs and frameworks. You can also gain some insight into protocol-oriented programming by examining how the protocols are used under the hood, as well as tapping and dragging out for-loops and arrays literally at the tip of your fingers. It’s just fun for all ages.
9) What’s New in SpriteKit
SpriteKit is Apple’s 2D graphic framework for building games on iOS, macOS and tvOS. This year it comes to the Apple Watch in watchOS 3. Xcode 8 has a new Integrated Layout Manager, which enables access to many gaming tools (see What’s New In GameplayKit).
Xcode 8 also has a brand new tile map editor – a feature we have been hoping for since the advent of SpriteKit! Editing tile maps can be tedious, but Xcode 8 adds the ability to paint tile maps, and group and animate tile elements. Tile maps can be layered for composition and layers can be transformed at different rates to create parallax effects.
This session also covers GameplayKit integrations, discussing how components can be applied to nodes. Xcode 8 also has a new Scene Outline view. You can see all of the nodes in your game, examine and adjust the parent-child relationships.
New in SpriteKit this year is Warp Transformations. Sprites can be manipulated and iOS takes care not to make the distortions too obvious. New focus integration on tvOS is covered as well along with some best practices and performance enhancements.
10) Visual Debugging with Xcode
One of the true joys of being a software developer is dealing with your app suddenly exiting to home screen, runaway loops generating thousands of objects, or a delegate not performing an expected task. OK, I’m kidding. Think of it this way: which do you do more often: add features, or fix bugs?
Debugging an app is actually enjoyable when you can fix a bug. This year Apple has greatly improved the debugging experience in Xcode with enhanced visual debugging tools. First up, they’ve added the ability to debug issues at runtime as well as during build time with a new runtime scope. Using Xcode, you can now detect data races, unpublished mutexes, threading issues and call handlers.
The view debugger has been greatly enhanced: app snapshots are generated 70% faster. Layout rendering is also more accurate, and you can render blurs and transforms right inside Xcode. With the exploded view, you can now explore an object’s properties, object hierarchies and inspect Auto Layout constraints. Ambiguity in Auto Layout can also be displayed at runtime.
The killer feature of the visual debugging in Xcode is the new Memory Graph Debugger. If you pause the app while it’s running, you can display the objects graphically. You can examine relationships between objects, who owns what object and what type of references it has. For leaked memory, there is a Cycles view which gives you a graphical representation of of a cycle. Bold connecting lines represent strong connections, while grey lines represent weak references.
The debugger can also export a new Memgraph file which you can examine later. This file type can also be used in your continuous integration solutions. If you love breaking code as much as I do, then you’ll love this session. Sadly, I do enjoy debugging. :]
Where to Go From Here?
In summary, here are our picks of the top 10 WWDC videos to watch:
- Platforms State of the Union
- What’s New in Swift
- What’s New in watchOS 3
- Improving Existing Apps with Modern Best Practices
- What’s New in Cocoa Touch
- Protocol and Value Oriented Programming in UIKit Apps
- What’s New In GameplayKit
- Introducing Swift Playgrounds
- What’s New in SpriteKit
- Visual Debugging with Xcode
Want some help getting up-to-speed on all the new iOS 10 APIs? We are working on a new book about this called iOS 10 By Tutorials – and subscribers get free access! :]
Which WWDC Session most impressed you? Feel free to share your own favorites in the discussion below – and happy video watching! :]