![ios – 在Swift闭包中使用[弱自我]和赋值,第1张 ios – 在Swift闭包中使用[弱自我]和赋值,第1张](/aiimages/ios+%E2%80%93+%E5%9C%A8Swift%E9%97%AD%E5%8C%85%E4%B8%AD%E4%BD%BF%E7%94%A8%5B%E5%BC%B1%E8%87%AA%E6%88%91%5D%E5%92%8C%E8%B5%8B%E5%80%BC.png)
在Apple开发论坛上有already posted并没有回复,我想我会把它带到SO …
我的类强烈引用了AFhttpSessionManager实例,下面的代码片段是一个用于调用GET(_,参数,成功,失败)方法的闭包.
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的错误和状态变量时,这种方式是在闭包中使用[weak self]以及if let语法是否正确?我猜这是因为在关闭执行之前,self可能已经消失了.我不能使用self?.error = …因为这会产生编译器错误.
解决方法 使用Xcode 6 beta 5,您现在可以使用 do assignments via optional chaining.您甚至可以通过检查赋值的返回值来检查赋值是否完成:if (self?.error = NSError(domain: MyConnectionErrorDomain,userInfo: nil)) == nil { // `self` became nil in the meantime} 更新:我刚试过可选的绑定,如果var,它似乎在beta 5中工作:
if var strongSelf = self { // ...} 总结 以上是内存溢出为你收集整理的ios – 在Swift闭包中使用[弱自我]和赋值全部内容,希望文章能够帮你解决ios – 在Swift闭包中使用[弱自我]和赋值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)