iOS 11 SDK Features that Didn't Make the Headlines

CoreML and ARKit certainly stole the show at WWDC this year. While they look very promising, these frameworks aren’t going to change too much for the ordinary iOS developer. Regular work will still involve the usual suspects; UIKit, Foundation and CoreData to name a few. Apple hasn’t dropped the ball here: Xcode 9 and iOS 11 have many improvements system wide that are much more likely to effect day to day development. I’d like to highlight a few things that haven’t received so much attention yet.


New MapKit Markers

There’s new annotation view type, MKMarkerAnnotationView. It’s super configurable.

MKMarkerAnnotationView

Configurable File Headers

File headers now support macros in Xcode 9. There’s a great write up here.

Block Based UITableView Updates

Just like UICollectionView, you can now update tables with a block and completion handler call.

tableView.performBatchUpdates({
    // Perform updates
}) { completed in
    // Runs after completion
}

MapKit Clustering

No more clustering libraries! (Well, once you’re targeting iOS 11+). Those MapKit controls you can see below? You can now access these directly too, and position them however you’d like.

MapKit Clustering

Closure Based KVO

object.observe(\NSObject.description) { (object, change) in
    // Handle object changes
    // The above backslash is Swift 4 notation for KeyPath
}

URLSession Scheduling

There are various new features scattered throughout the URLSession documentation, including the ability to wait for connectivity, and schedule data tasks for a later time.

Vector UIImage Support

Finally, vector image support - scaled up images will remain crisp, no pixels to be seen. You can find more info here.

A New MapKit Display Type

MapKit now supports a ‘muted’ display type, allowing overdrawn content to stand out.

MapKit Muted

For comparison, here’s the default display type:

MapKit


For further reading, full change notes for the Foundation framework are available here.