我想从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
有一种奇怪的爱恨交织的关系,我希望能够在那里使用自我。我不想使用弱/无主引用,而是使用强引用,但我不知道如何声明它:
这适用于弱引用(类似于无主引用):
[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!)
}
}