15 - WWDC 2015 Developer Highlights for Xcode 7 + iOS 9 + Swift 2 / by Paul Solt

Learn everything you need to know about changes for the Apple Developer program. One program to target all apps on iPhone, iPad, Mac, and Apple Watch. Apple continues to innovate with Swift and Xcode.

Subscribe on iTunes

Please rate the Creative Person Podcast on iTunes. Post a question you have about the Apple Watch and I'll answer it in an upcoming episode. 

Development 

iOS 9 Supports all previous devices

iOS 9 download will be just over 1 GB, not 5 GB !

  • Anyone can run apps on their iPhone (no need for paying for developer membership)
  • Extended GameKit APIs
    • GameplayKit
      • Rule-based games (agent + behavior)
      • State machines for AI
      • Pathfinding 
      • ReplayKit
    • Record gameplay (or app usage)
      • Playback and share
      • Social interaction outside the game
    • Model I/O
      • 3D models (mesh)
      • Realistic lighting of 3d objects
      • Import from industry standard file formats
      • Loading and exporting 3d assets
  • App Thinning 
    • Reduce download size
  • Bitcode - support new features + optimizations
    • Will you need to test more platforms?
  • On-demand resources
    • Nice to have, but getting your game out should be your first priority

Xcode 7

  • Improved asset collections
  • Level editor for SceneKit games (hopefully much better than prior support)
  • Improved Testing
    • UI Testing
    • Code coverage

Swift 2

  • Open Source later in 2015
  • Linux support
  • Microsoft Swift port?

Goal of Swift: Make your intent is clear from first lines of code

Faster compiler (bigger projects)

Control flow improvements

  • if let
  • guard
  • if case (case pattern matching everywhere)
  • for case 

Migrator to convert Xcode 6 to Xcode 7

  • Should work better than the previous migrators

Keyword naming rules for functions and methods are the same

Felt divergent in Swift <= 1.2

Protocol extensions allow functionality to be added to protocols

  • Exposes logic to collection types that was missing
  • Previous collection functions were global, and didn’t appear in auto complete suggestions or API

Other topics

  • “do while loop” is now the “repeat while loop”
  • do infers scoping, which helps with memory releasing or new error handling logic
  • guard - new way to reduce if let syntax indentation
  • println is becoming print

Error handling (i.e. smarter exceptions)

  • NSError APIs all changing in Swift 2
  • try, catch, throw
  • No longer pass in error, instead it’ll propagate out using throws keyword
  • Explicit  and easy to see
  • Not everything throws an exception by default – helps regular error handling logic’
  • defer keyword (error recovery logic)

 

Generics are part of Objective-C

Will help make APIs more Swift-like and easier to use in Swift

Improved code suggestions and error messages

  • Previous demos of improvements felt minimal – there are a lot of errors you can run into
  • Some of the changes demonstrated looked promising – time will tell

Better documentation

  • Rich text in QuickHelp (Markdown variant)
  • Header view – get the high level view of your source files methods

Improved Playgrounds

  • Resources folder (easy to add to)
  • Source folder (add supplemental files to assist with code examples)
  • Build workbooks with multiple pages