我有一个iPad应用程序,我需要将一些数据发送到服务器,如果获得成功响应,数据将从我的缓存文件夹中删除。我目前正在使用asihttp网络队列来执行此操作并在一个viewcontroller中正常工作。但实际上我想要的是在应用程序中处理发送而不是在单个视图控制器和进程响应中。目前,当我移动到下一个视图控制器时,我需要停止网络队列。有没有办法做这个作为背景线程,任何样品都可能非常感谢。
答案 0 :(得分:0)
首先,您需要转移到更新的框架,因为不再支持ASIHTTP。我建议您为此目的查看AFNetworking。此框架允许您使用NSOperation子类(如AFJSONRequestOperation)执行请求。 NSOperations可以取消。请注意,如果NSOperation对象已经启动,则可能不会立即取消它。此外,为了获得更好的性能,最佳实践和其他一些非常好的理由,您应该使用NSOperationQueue对象来管理您的请求。 AFNetworking为您提供便利队列(建议),但您也可以自己创建一个。
答案 1 :(得分:0)
您可以使用NSURLConnection与GCD块一起在单独的线程中运行该进程。
dispatch_queue_t downloadQueue = dispatch_queue_create("attendanceLoader", nil);
dispatch_async(downloadQueue, ^{
//YOUR NETWORK CALL HERE
dispatch_async(dispatch_get_main_queue(), ^{
//AFTER NETWORK CALL IS COMPLETE
//DELETE CACHE HERE
});
});//end of GCD