Swift闭包

2016-04-23  本文已影响167人  JaXz

首先我们来对比一下Swift下函数和闭包的区别

Swift的闭包和OC里面的block是非常相似的,作用是用于保存一段代码, 在需要的时候执行

OC: block类似于匿名函数, 用于封装代码块, 在特定的时候执行

类型: 返回值类型(^block名称)(形参列表)

值:

^(形参列表){

需要执行的代码

}

Swift: 闭包是用于定义函数(Swift中函数就是闭包, 闭包就是一个特殊的函数)

类型: (形参列表)->返回值类型

值:

{

(形参列表)->返回值类型

in

需要执行的代码

} // in 的含义是用于区分形参返回值和执行代码


当OC的block遇到循环引用的时候,我们会用__weak typeof(self) weakSelf = self 或者 __unsafe_unretained 来解决

区别:

//    __weak  : 如果对象释放, 会自动设置为nil

//    __unsafe_unretained: 如果对象释放, 不会自动设置为nil

Swift闭包中会使用强引用self,跟OC的block一样会出现循环引用的问题


几个解决的方法如下:

上一篇 下一篇

猜你喜欢

热点阅读