设为首页 加入收藏

TOP

swift 闭包循环引用
2017-10-13 10:17:01 】 浏览:9312
Tags:swift 循环 引用

  当使用闭包时,类本身持有self,然后又在闭包中访问了self或者self的属性,就会导致恶心额循环引用。swift提供的解决方法是在闭包中定义捕获列表,捕获列表是闭包想怎么引用捕获来的变量。例如下面定义了一个捕获列表,引用self为unowned引用,这样在宾傲中用self就不会导致循环引用

    let name = "cyy"
    lazy var someClosure: (Int, String) -> String = {
        [unowned self](index: Int, stringToProcess: String) -> String in
        print(stringToProcess + self.name)
        return self.name
    }
//打印的值为:
//lllcyy
//deinit >>><kuaixiaoyigou.LoginViewController: 0x7fde8a40acb0>

 去掉捕获列表

let name = "cyy"
    lazy var someClosure: (Int, String) -> String = {
       (index: Int, stringToProcess: String) -> String in
        print(stringToProcess + self.name)
        return self.name
    }
//打印值:
//lllcyy 没有调用deinit

 

  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【代码笔记】iOS-禁止输入表情符号 下一篇IOS 计步器

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目