In What’s new in Cocoa Touch at WWDC 2018, Apple gave an overview of framework updates (largely focused on performance), API enhancements, and Siri shortcuts. You can read my notes from the talk below, and you can watch the video and download the slides from Apple’s WWDC 2018 page.

Overview

Framework updates

API enhancements

Siri shortcuts

Performance updates

Scrolling

Memory

Auto Layout

UITableView, UICollectionView

layoutSubviews and draw can take a lot of time

you get 8ms on iPad Pro to do all the work

…and 16ms on other devices (due to refresh rate differences)

UITableViewDataSourcePrefetching is a big help most of the time

iOS 12 is more intelligent about background prefetching while scrolling

Now iOS passes info about scrolling from UIKit down to lower levels

All apps get these enhancements for free

…but to get the most out of the new enhancements:

adopt the table view / collection view data source prefetching API

profile your app

Memory is Performance

The system has to do work to go get memory for you when it’s not available

That time could be better spent in your app than in the system

Automatic Backing Store

new in iOS 12, default

UIView.draw

UIGraphicsImageRenderer

UIGraphicsImageRendererFormat.Range

Auto Layout

Faster by default in iOS 12

Independent Sibling Views: laid out relative to container, not each other

constant cost in iOS 11

reduced constant cost in iOS 12

Dependent Sibling Views: layout is dependent on one another

Grows exponentially in iOS 11

Grows linearly in iOS 12

Nested Views: one view in another, in another, in another

Grows exponentially in iOS 11

Grows linearly in iOS 12

Swiftification

Automatic migration to new APIs

Nesting types

In Swift 4.2:

UIApplicationState -> UIApplication.State

UITabBarItemPositioning -> UITabBar.ItemPositioning

Nesting constants

NSNotification.Name

UIApplicationStatusBarOrientationUserInfoKey now in UIApplication

UIFloatRangeZero -> UIFloatRange.zero

Nested function

UIEdgeInsetsInsetRect -> rect.insetBy()

UIImagePNGRepresentation -> image.pngImage()

String conversion

Codable conformance for CGPoint, CGRect, CGSize, CGVector…

print(CGPoint(x: 0, y: 0)

NSSecureCoding

New secure-by-default encoding and decoding APIs

Older APIs now deprecated

API Enhancements

Notifications

Interaction

Grouping

Settings

Interaction: Define programmatically

Grouping: iMessage groups all messages from a single conversation

you can tag notifications with a thread identifier so they can be grouped

Settings: deep link to your notification settings UI

Messages

Stickers automatically work in Camera

Now you can check whether you’re in Messages or Camera

Automatic Passwords and Security Code AutoFill

iOS 12 lets you store passwords into iCloud Keychain after they log in

You can generate passwords with iCloud Keychain

Make sure auto-generated passwords meet your app’s password requirements

Two-Factor Auth (Security Code) AutoFill

Safe Area

Top & bottom

Different bar heights in split view on iPad

iPhone X gives safe areas in portrait and landscape

Siri Shortcuts

Common actions from your app to Siri

Suggested on lock screen, Siri Watch face

NSUserActivity (simpler)

Intents (more complex)

NSUserActivity: eligibleForPrediction = true

Intents:

Car commands

Notes

Visual codes

Ride booking

VoIP calling

define your own custom intents

Custom Intents:

Do, Run, Go, Create, View, Order, Start…

Shortcuts app: available on the App Store

Hope this helps! If you want more like this, enter your name and email in the boxes below to get all my WWDC 2018 recaps — including the ones for the Keynote and the Platforms State of the Union.