今天好奇了下Swift中多个defer和嵌套defer会怎样执行,遂写了个demo, 验证了下
class DeferModel {
static func test() {
defer {
print("defer1 begin")
defer {
print("in defer 1")
}
print("defer1 end")
}
defer {
print("defer2 begin")
defer {
print("in defer 2")
}
print("defer2 end")
}
print("do Sth in defer demo")
}
}
// 输出:
do Sth in defer demo
defer2 begin
defer2 end
in defer 2
defer1 begin
defer1 end
in defer 1
结论
- 多个defer先执行后面的,再执行前面的
- defer中的defer可以跟普通的作用域一样,先执行完普通逻辑最后才执行defer