Skip to content

Instantly share code, notes, and snippets.

@mackuba
Last active August 6, 2022 17:28
Show Gist options
  • Save mackuba/15994186a4f9d7da3137 to your computer and use it in GitHub Desktop.
Save mackuba/15994186a4f9d7da3137 to your computer and use it in GitHub Desktop.
New stuff from WWDC 2015

Here's my own list of the interesting stuff announced during this year's WWDC, collected from the keynotes, various Apple docs, blog posts and tweets.

If you're planning to watch the videos, I really recommend this Mac app that helps you download and watch them: https://github.com/insidegui/WWDC.

OS X El Capitan

http://www.apple.com/osx/elcapitan-preview/

  • split view - two apps side by side on full screen
  • improved Mission Control
  • shaking the mouse highlights the cursor
  • smarter Spotlight (Siri-like results, natural language queries, resizable window)
  • Mail: tabbed compose window as a popup in full screen mode; autosuggests new contacts and events; swipe gestures
  • Notes: updated UI, supports checklists and embedded media, syncs through iCloud, attachment browser
  • Photos: sorting albums by date
  • Safari: pinned sites, detect and mute audio in tabs
  • Maps: public transit
  • significant performance improvements, mostly thanks to the Metal framework
  • new beach ball cursor
  • new system font (San Francisco)
  • Safari developer tools: responsive design mode
  • System Integrity Protection - limited some privileges of admin accounts (can't modify system files or access system processes) - can be disabled with a special utility
  • redesigned disk utility, new color picker, option to autohide menu bar

iOS 9

https://www.apple.com/ios/ios9-preview/

  • more intelligent Siri
  • proactive suggestions in various places
  • more intelligent search feature, extensible by apps
  • iPad multitasking - slideover, split view, Picture in Picture
  • Notes: supports checklists and embedded media, sketch drawing, syncs through iCloud
  • Passbook renamed to Wallet, can hold reward cards etc.
  • Maps: public transit, finding places nearby
  • News app
  • iCloud Drive app that shows all contents of your iCloud drive
  • "Move to iOS" app (in the App Store) for migrating from Android
  • iPad keyboard - copy/paste buttons, dragging on the keyboard makes it select text
  • iPad external keyboard - app switching
  • new app switcher
  • lowercase keyboard
  • low power mode
  • smaller download size for OS updates and less free space required to install
  • passcodes can be 6 digits long
  • to log in on a new device, you need to enter a verification code shown on one of your existing devices
  • full right to left support - in RTL mode, everything is right to left - system controls, layout, gestures, navigation, tab bars etc.
  • optimized UI, up to 1h more of battery usage
  • notifications don't light up the screen if the iPhone is lying face down
  • popovers now drop a slight shadow around them on the underlying view
  • "share" option added to the popover shown when selecting text

watchOS 2

https://www.apple.com/watchos-2-preview/

  • new watch faces (photo, album, timelapse)
  • time travel feature - shows events and predicted status of various things (e.g. weather) in the future or in the past if you've missed something
  • night stand mode - landscape display, buttons act as "snooze" and "off"
  • public transit support in maps and siri
  • siri can show glances
  • watch is protected by Activation Lock on startup

Foundation

https://developer.apple.com/library/prerelease/mac/releasenotes/Foundation/RN-Foundation/index.html

  • NSURLConnection is deprecated in favor of NSURLSession
  • App Transport Security: non-encrypted HTTP connections are now blocked by default unless you explicitly add an exception to the plist file (doc)
  • IPv6 support is now required
    • using standard library classes like NSURLSession is recommended
    • avoid hardcoding IP addresses
    • for testing: OSX can create an IPv6 network for the iPhone
  • assigning nil to an NSMutableDictionary key through a subscript now removes the key (e.g. dict[@"key"] = nil)
  • NSNotificationCenter now automatically handles removing deallocated observers (except block-based ones) so you don't need to unregister manually in dealloc/deinit
  • lzfse - new compression algorithm available for compressing data
  • NSPersonNamesComponentFormatter - for displaying people's names in a localized way
  • methods for percent-escaping URL strings were deprecated and replaced with new ones

OS X SDK

https://developer.apple.com/osx/pre-release/

https://developer.apple.com/library/prerelease/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_11.html

  • Metal & MetalKit - a framework for doing various operations on the GPU
  • photo app extensions allow you to add filters and other edit tools to Photos
  • Safari extensions can now block content (old way of intercepting content in extensions is deprecated)
  • web APIs in Safari for accessing Force Touch trackpad
  • MapKit can now be used in apps outside Mac App Store
  • APIs to support force touch trackpads
  • NSLayoutGuide - a kind of lightweight subview for defining an AutoLayout section which isn't actually a real view
  • NSLayoutAnchor - a helper for creating AutoLayout constraints in code

iOS SDK

https://developer.apple.com/ios/pre-release/

https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html

http://www.hackingwithswift.com/ios9

  • App Thinning, App Slicing - optimizes app download for the given device - can choose e.g. only 64-bit code, only 2x images etc. (doc)
  • On-Demand Resources: files can be hosted in the App Store separately from the app and downloaded only on demand (Xcode simulates this during debugging, streaming the resources to the device) (doc)
  • Bitcode - code is submitted as intermediate LLVM representation that can be later converted by the App Store to new CPUs and architectures (required for watchOS, recommended and enabled by default for iOS)
  • universal app links (http) - clicking registered http links opens your app instead of Safari, intended as a replacement for custom URL schemes
  • apps need to declare used external URL schemes in Info.plist, old apps can only use canOpenURL 50 times to prevent abuse
  • UIStackView - a layout container for arranging views vertically or horizontally
  • SFSafariViewController - a view controller for showing a built-in browser inside your app (shares cookies and data with Safari)
  • NSLayoutAnchor - a helper for creating AutoLayout constraints in code
  • search API (Core Spotlight, search extension and some other ways)
  • GameplayKit - algorithms and data structures that can be useful for games (but not only) (doc)
  • Model I/O - lighting for 3d models
  • ReplayKit - lets you record gameplay screencasts inside the app
  • notifications can allow a text response (UIUserNotificationActionBehaviorTextInput)
  • app's iCloud documents can be opened in place inside iCloud Drive app (LSSupportsOpeningDocumentsInPlace)
  • using adaptive layout / size classes is recommended to support iPad multitasking
  • Picture in Picture - support via WKWebView and AVPlayerViewController, and a new AVPictureInPictureController
  • Core Image: text detection feature (no OCR, just detects that there is a text)
  • it's now allowed to submit 64-bit only apps
  • touch prediction in UIKit
  • full support for right-to-left languages (layout mirroring)
  • possibility to define keyboard shortcuts for external keyboards (addKeyCommand)

watchOS SDK:

https://developer.apple.com/watchos/pre-release/

https://developer.apple.com/library/prerelease/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/

  • native apps - still supplied as an iOS extension, no completely custom views, but the code runs on the watch
  • "complications" - tiny widgets that can be displayed inside various watch faces (ClockKit)
    • you create a timeline up front - what to show at what time, and watchOS uses this to show up to date data immediately when the screen turns on (also used for time travel - forward and backward)
    • scheduled updates - lets you update the data in the timelines at scheduled intervals
    • push updates - via push notifications
  • apps can access the Internet through known WiFi networks w/o an iPhone
  • apps can access microphone, HealthKit including heart rate, HomeKit, accelerometer, taptic engine, crown, play audio and video, record audio, make phone calls
  • a lot of well known frameworks are available like CoreGraphics, CoreLocation, CoreMotion, CoreData etc.
  • WatchConnectivity framework for communication between the extension and the iPhone app
  • NSURLSession can be used directly on the watch even if the iPhone is out of range
  • WKInterfacePicker control for scrolling through elements with the crown

Developer tools

Swift 2.0

https://developer.apple.com/swift/

https://mikeash.com/pyblog/friday-qa-2015-06-19-the-best-of-whats-new-in-swift.html

http://airspeedvelocity.net/2015/06/09/changes-to-the-swift-standard-library-in-2-0-beta-1/

http://www.russbishop.net/swift-2-0

New/updated ebook is also available.

Xcode 7 & dev portals

https://developer.apple.com/xcode/

https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_7_0.html

  • Mac, iOS and Safari Developer Programs joined into a single Apple Developer Program ( link & link)
  • Developer Program is no longer required to run apps from Xcode on your iOS device (!)
  • in the Developer Portal, you can now register 100 devices of each kind separately (e.g. 100 iPhones, 100 iPods etc.) - including Apple TVs!
  • iTunes Connect now allows adding a single address to multiple organizations like Developer Program did
  • TestFlight: 2000 external testers, 60-day builds
  • new developer forums at forums.developer.apple.com, open to everyone without logging in
  • framework for writing UI tests + a test action recording tool (default app templates now automatically add a UI test target)
  • code coverage reporting
  • migration tool for migrating Swift code to 2.0
  • Address Sanitizer - a tool that helps you detect improper memory usage bugs
  • Find -> Call Hierarchy for finding method calls in potential stack traces
  • integrated crash log browser for iOS and OSX
  • header file view assistant mode for viewing Swift classes without implementations
  • energy usage gauge for iOS apps
  • animation and level editor for SceneKit and SpriteKit
  • IB support for segues between storyboards and placeholders for scenes from other storyboards
  • ObjC generics (NSArray<NSString*>*) - not actually enforced, mostly for Swift compatibility
  • various improvements to playgrounds, including possibility to have multiple pages
  • CloudKit Web Services - a web service and JS library for accessing iCloud from web apps using JavaScript (includes OAuth-style login with Apple ID)

Other

  • Apple Pay expands to UK
  • Apple Music launches in 100+ countries, first 3 months free (from the moment of signup)
@jrgalan
Copy link

jrgalan commented Jul 11, 2015

Thank you so much!

@jayrparro
Copy link

great work! Thanks!

@mohammdsss1
Copy link

Great stuff
thanks a lot

@xdream86
Copy link

nice!

@jmig
Copy link

jmig commented Jul 13, 2015

👍 Great stuff

@nathanpeles
Copy link

Great post, thanks!

@neildavis
Copy link

Very useful! Thanks!

@s
Copy link

s commented Jul 13, 2015

Great! Thank you.

@kairen
Copy link

kairen commented Jul 14, 2015

Thank your post! Great Work!

@3lvis
Copy link

3lvis commented Jul 14, 2015

You forgot to add the new core data stuff, for example primary key support

@jnaitenterprise
Copy link

Thank you very much!

@forbze
Copy link

forbze commented Jul 15, 2015

Great Summary!

@zhjuncai
Copy link

very informative , great work

@sam-w
Copy link

sam-w commented Jul 16, 2015

Excellent stuff, thanks @mackuba

@alex-zige
Copy link

Excellent!

@reydan
Copy link

reydan commented Jul 20, 2015

thx!

@mgarciaibanez
Copy link

Very useful!!! Thanks a lot

@Volodrippa
Copy link

Nice! Thanks for saving a lot of time!

@knt
Copy link

knt commented Aug 30, 2015

Thanks! Very helpful

@christ776
Copy link

Excellent !! Very good job !

@ipaboy
Copy link

ipaboy commented Jul 16, 2016

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment