Swift 面试题
目录

Swift 中如何使用 defer 语句清理资源?

· 约 3 分钟读完 · 第 132 / 196 章

推荐答案

在 Swift 中,defer 语句用于在代码块退出时执行一些清理操作,无论代码块是通过正常流程退出还是通过抛出错误退出。defer 语句非常适合用于资源清理,如关闭文件、释放锁等。

在这个例子中,defer 语句确保 closeFile(file) 会在 processFile 函数退出时执行,无论函数是正常返回还是抛出错误。

本题详细解读

defer 语句的作用

defer 语句用于在代码块退出时执行一些清理操作。它的主要特点是:

  1. 延迟执行:defer 语句中的代码不会立即执行,而是在当前作用域退出时执行。
  2. 确保执行:无论代码块是通过正常流程退出还是通过抛出错误退出,defer 语句中的代码都会被执行。
  3. 逆序执行:如果有多个 defer 语句,它们会按照逆序执行,即最后一个 defer 语句最先执行。

使用场景

defer 语句非常适合用于资源清理的场景,例如:

  • 关闭文件
  • 释放锁
  • 断开网络连接
  • 释放内存或其他资源

示例代码

在这个例子中,openFile 函数打开一个文件,closeFile 函数关闭文件。defer 语句确保 closeFile(file) 会在 processFile 函数退出时执行,无论函数是正常返回还是抛出错误。

多个 defer 语句的执行顺序

如果有多个 defer 语句,它们会按照逆序执行:

输出结果为:

在这个例子中,defer 语句按照逆序执行,即最后一个 defer 语句最先执行。