Swift version: 5.10
The defer
keyword is new in Swift 2 and lets you schedule some code to be run at a later date. That later date is when your code exits its current scope, which might be when a function returns or at the end of a loop, for example.
If you've used other programming languages, defer
will seem similar to try/finally
. Any code you defer will run no matter what, even if you throw an exception.
In the example code below, the closeFile()
function will get called no matter how the writeLog()
function ends:
func writeLog() {
let file = openFile()
defer { closeFile(file) }
let hardwareStatus = fetchHardwareStatus()
guard hardwareStatus != "disaster" else { return }
file.write(hardwareStatus)
let softwareStatus = fetchSoftwareStatus()
guard softwareStatus != "disaster" else { return }
file.write(softwareStatus)
let networkStatus = fetchNetworkStatus()
guard networkStatus != "disaster" else { return }
file.write(networkStatus)
}
SPONSORED Transform your career with the iOS Lead Essentials. Unlock over 40 hours of expert training, mentorship, and community support to secure your place among the best devs. Click for early access to this limited offer and a FREE crash course.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 7.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.