Swift version: 5.6
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 AppSweep by Guardsquare helps developers automate the mobile app security testing process with fast, free scans. By using AppSweep’s actionable recommendations, developers can improve the security posture of their apps in accordance with security standards like OWASP.
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.