Contents
  1. 1. Swift-逃逸闭包和非逃逸闭包
    1. 1.1. 逃逸闭包_@escaping
    2. 1.2. 非逃逸闭包_@noescape
    3. 1.3. 内存管理
    4. 1.4. 自动逃逸

Swift-逃逸闭包和非逃逸闭包

逃逸闭包_@escaping

  • 一个接受一个闭包作为参数的函数,如果参数需要在函数结束之后才被调用
  • 也就是闭包脱离了函数的作用域

非逃逸闭包_@noescape

  • 一个接受一个闭包作为参数的函数,闭包会在函数结束前被调用
  • 非逃逸闭包

内存管理

  • 非逃逸闭包不会存在循环引用,因为在函数作用域内就释放了
  • 开发中使用非逃逸闭包有利于内存优化

自动逃逸

  • 注意
    • 当闭包被当做参数,包裹在其他类型中(元祖/枚举/case/Optional可选型)中会自动逃逸
Contents
  1. 1. Swift-逃逸闭包和非逃逸闭包
    1. 1.1. 逃逸闭包_@escaping
    2. 1.2. 非逃逸闭包_@noescape
    3. 1.3. 内存管理
    4. 1.4. 自动逃逸