Swift weakSelf在闭包语法中

我有这个代码来获得JSON:

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

如何在这里宣布自己弱? 我知道它应该是无主的,但我找不到正确的语法。 当我尝试使用[unowned self] .serverList而不是注释行时,编译器显示错误“使用未parsing的标识符unowned”。 我也试图像这样在块之前声明不变:

 unowned let uSelf = self 

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

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

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

但是请注意,您并没有在这里创build保留周期,所以您不必在这里使用weakunowned自我。 关于这个话题的好文章: http : //digitalleaves.com/blog/2015/05/demystifying-retain-cycles-in-arc/

你可以通过在closures参数之前放置[weak self]来声明一个弱的自引用。

你可以在这里看到文档