美文网首页
Swift闭包

Swift闭包

作者: JaXz | 来源:发表于2016-04-23 09:23 被阅读167次

    首先我们来对比一下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一样会出现循环引用的问题


    几个解决的方法如下:

    相关文章

      网友评论

          本文标题:Swift闭包

          本文链接:https://www.haomeiwen.com/subject/hqixrttx.html