Swift defer

Swift defer keyword is used to execute a block of code at a later point in time, which is just before the end of execution of current scope, where the scope is defer statement’s scope.

The syntax to use defer keyword is

defer {
    //code
}

The code inside defer block executes only at the end of the execution of this defer’s scope.

Examples

In the following program, we define defer code in which there is a print statement. The scope of this defer statement is the scope of the program. So, this defer statement will execute at the end of the program.

main.swift

print("Hello World")
defer {
    print("Bye!")
}
print("Welcome!")

Output

If there are more than one defer blocks in current scope, those defer blocks will execute in order from top to bottom at the end of execution of current scope.

main.swift

print("Hello World")
defer {
    print("Bye!")
}
print("Welcome!")
defer {
    print("Catch you later!")
}
print("Please, take a seat.")

Output

Now, let us write a defer statement inside a function, as shown in the following program. The scope of this defer statement is the function.

main.swift

func greetings() {
    print("Hello World")
    defer {
        print("Bye!")
    }
    print("Welcome!")
    defer {
        print("Catch you later!")
    }
    print("Please, take a seat.")
}

print("Starting program..")
greetings()
print("Ending program..")

Output

Conclusion

In this Swift Tutorial, we learned how to use defer keyword in Swift, to execute some code at the end of its scope.