逃逸闭包当闭包作为函数的参数,且可能在函数结束之后才被调用,即逃离了函数的作用域,我们就说这个闭包是逃逸闭包。使用修饰形参,明确闭包是允许逃逸的。使用@escaping修饰闭包后,必须在闭包中显示的使用self。可能会产生循环引用,因为需要在闭包中显示的使用self。一般用于异步函数的返回,例如网络请求。非逃逸闭包当闭包作为函数的参数,且是在函数结束之前被调用,我们就说这个闭包是非逃逸闭包。不会产生循环引用,因为闭包的作用域是在函数的作用域内,函数执行完后就会释放掉闭包所捕获的对象。非逃逸闭包捕获的上下文在栈上,不是在堆上。针对非逃逸闭包,编译器会做优化,例如当明确了闭包的生命周期后,就可以省