objective-c – 如何使用AFNetworking立即强制取消NSOperation?
我在我的应用程序中使用AFNetworking,我正在尝试在我的进度HUD中实现“点按取消”功能.我有一个管理所有HTTP请求的单例类.如果点击进度HUD,我打电话:
[[[HTTPRequestSingleton sharedClient] operationQueue] cancelAllOperations]; 但这并不像我需要的那样“取消”操作.我读了
关于cancelAllOperations方法:
我的问题似乎特别涉及一个已经执行的操作,我想立即取消.使用AFNetworking,如何提醒操作它应该取消并丢弃有关请求的所有信息? 用于操作的代码 AFJSONRequestOperation *loginOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request,NSHTTPURLResponse *response,id JSON) { //operation was successful if (loginOperation.isCancelled) { //can't do this. variable 'loginOperation' is uninitialized when captured by block } } failure:^(NSURLRequest *request,NSError *error,id JSON) { //operation failed }]; 解决方法
经过一整天的AFNetworking源代码挖掘后,事实证明我的操作没有取消的原因与操作本身无关,而是因为我一直在错误地开始操作.我一直在用
[NSOperation start]; 当我应该将它添加到我的HTTPRequestSingleton的操作队列时: [[[HTTPRequestSingleton sharedClient] operationQueue] addOperation:NSOperation]; 将其添加到队列可以正确取消它,而无需检查isCancelled属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |