阐述
一句话概括: defer包裹的代码会在函数return之前执行。
(无论函数是从哪个分支return, 或 throw, 或自然执行到最后一行)
认知
1 使用场景
1-1 do-catch 结构
a defer在do-catch结构中的do代码块中,defer会在do代码块执行完就执行defer代码
b defer在do-catch结构中的do代码块外,defer会在函数代码块执行完执行defer代码
1-2 清理工作,回收资源
a 关闭文件
b dealloc 手动分配的空间需要释放
c 锁的解开
1-3 completion block
a 函数block的回调
b 函数block的置空
1-4 调用super方法
2 细节
2-1 任意scope都可以有defer
2-2 必须执行到defer代码行,defer才会生效
2-3 多个defer 执行顺序,栈结构
资料
1 https://www.jianshu.com/p/a71d87d92459