@escaping 的实现原理

3 min read

@escaping 是用于表示一个闭包在函数结束后会被保存在内存中并在函数结束后执行的标识符。下面是@escaping 实现的原理:

  1. 当一个函数接受一个闭包作为参数时,并且该函数返回之前让这个闭包完成一些操作,这个闭包可以被标记为@escaping。

  2. 当闭包被标记为@escaping时,它必须通过强引用来保存,并在函数返回之后继续存在。否则,当函数返回时闭包会被销毁,因为函数对闭包没有强引用。

  3. 如果闭包被标记为@escaping,则必须使用self来引用函数内的变量和方法,因为在函数返回时,这些变量和方法可能已经被销毁。

  4. 对于非@escaping闭包,因为它不需要被保存在内存中,在函数执行完毕之后即被销毁,所以可以使用weak引用来引用函数内变量和方法。