[英]Swift: how to declare a strong reference to reference self in a closure
我想从Alamofire发出请求,并使用该类的某些方法来处理响应。 什么有效:
// inside a class that has _handleError, _handleServerError
//and handleJsonResponse methods
func connect() {
let me = self
Alamofire.request(.GET,
"http://httpbin.org/get")
.responseJSON { (request, response, json, error) in
if let errorInstance = error? {
me._hanldeError(errorInstance)
return
}
if response!.statusCode != 200 {
me._handleServerError(response!)
return
}
me._handleJsonResponse(json!)
}
}
很好,但我与我之间有一种奇怪的爱恨关系, let me = self
,我希望能够在那里使用self。 我不想使用一个弱的/无主的引用,但是要使用一个强的引用,但是我不知道如何声明它:
这对于较弱的参考很有用(对于未拥有者,情况类似):
[weak self] (request, response, json, error) in
这不起作用:
[self] (request, response, json, error) in
这都不是:
[strong self] (request, response, json, error) in
有趣的是,该消息是: Expected "strong", "weak" or "unowned" specifier in capture list
。
答案可能比问题更有趣:如果您想要的是对自我的强烈引用(也许我做了太多的JavaScript),甚至不用理会,它已经在这里。
// inside a class that has _handleError, _handleServerError
//and handleJsonResponse methods
func connect() {
Alamofire.request(.GET,
"http://httpbin.org/get")
.responseJSON { (request, response, json, error) in
if let errorInstance = error? {
self._hanldeError(errorInstance)
return
}
if response!.statusCode != 200 {
self._handleServerError(response!)
return
}
self._handleJsonResponse(json!)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.