关闭语法中的Swift weakSelf

时间:2015-05-13 06:43:26

标签: ios swift closures

我有这个代码来获取JSON:

Alamofire.request(.GET, worlds).responseJSON { (request, response, JSON, error) in
        println(JSON)
        //weakSelf.serverList = JSON
    }

如何在这里宣布weakSelf?我知道在我的情况下它应该是无主的,但我找不到正确的语法。当我尝试使用[unowned self] .serverList而不是注释行时,编译器会显示错误"使用未解析的标识符' unowned'"。 我还尝试在块之前声明常量:

unowned let uSelf = self

它就像一个魅力,但我想了解如何在我的情况下使用[无主自我]。

2 个答案:

答案 0 :(得分:10)

使用捕获列表。正确的语法是:

Alamofire.request(.GET, worlds).responseJSON { [unowned self] (request, response, JSON, error) in
    println(JSON)
    self.serverList = JSON
}

但请注意,您并未在此处创建保留周期,因此您无需在此处使用weakunowned个自我。关于这个主题的好文章:http://digitalleaves.com/blog/2015/05/demystifying-retain-cycles-in-arc/

答案 1 :(得分:2)

您可以通过将[weak self]放在闭包参数之前来声明弱自引用。

您可以看到documentation here