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.
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.
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.
For comparison, here’s the default display type:
For further reading, full change notes for the Foundation framework are available here.