我一直在尝试使用Swift,并将AFNetworking集成到一个项目中,但是有些代码让我不太满意。
我已经在苹果开发者论坛上发布了,但没有得到回复,所以我想把它带到SO来...
我的类对一个
我已经在苹果开发者论坛上发布了,但没有得到回复,所以我想把它带到SO来...
我的类对一个
AFHTTPSessionManager
实例有强引用,下面的代码片段是一个闭包,用于调用GET(_, parameters, success, failure)
方法。let failure = { [weak self] (task: NSURLSessionDataTask!, error: NSError!) -> (Void) in
if error?.userInfo[AFNetworkingOperationFailingURLResponseErrorKey]?.statusCode == 401 {
if let weakSelf = self {
weakSelf.error = NSError(domain: MyConnectionErrorDomain, code: ErrorCode.InvalidCredentials.toRaw(), userInfo: nil)
weakSelf.state = .Error
}
}
}
当我需要改变self
的error
和state
变量时,在闭包中使用[weak self]
和if let
语法的方式是否正确?我猜测是正确的,因为在闭包执行之前,self
可能已经消失了。我不能使用self?.error = ...
,因为那会导致编译错误。