下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >Swift速成:捕获列表

Swift速成:捕获列表

spring发布于 2017-08-22 09:40查看:677回复:1

        这是一系列短文中的第一篇,会简单介绍些你可能不知道的东西。我也会努力尝试穿插写些更深入的长文。

     捕获列表

      很多人不知道Swift中可以显式地指定闭包的捕获列表。

        闭包封盖了局部环境变量,并为闭包内的代码创建了一个新的执行环境。Objective-C代码块或C#的lambda都是闭包的例子。假如你希望真正了解闭包,执行环境,命名绑定等,我推荐和。

        通过标记self为unowned或者用weak来打破 retain cycle,这种方法常常用来修改闭包捕获的这个 self 的属性

1503365832572299.jpg

        苹果官方语言指南要求如果闭包和其捕获的对象相互引用,应该使用unowned,这样能够保证他们会同时被销毁。这大概是为了避免对象被释放后维护weak引用空指针的开销。

     函数

        大部分人没有意识到自己可以创建如下新的命名变量:

1503365996371582.jpg

        这避免了引用thing1thing2时污染周围代码。作为加分项,thing2还是个weak引用。

        捕获列表需要尾随in关键字,并且紧跟着参数列表假如你有需要:

1503366017328205.jpg

   

收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

版主推荐

    共有1条评论

    • 课课家运营团队
    • 酸酸~甜甜
    • Mr ken
    • YUI
    • cappuccino
    • mr jack
    • IT宅男
    • Mright
    • 课课家技术团队1
    • 选择版块:

    • 标题:

    • 内容

    • 验证码:

    • 标题:

    • 内容

    • 选择版块:

    移动帖子x

    移动到: