我用以下代码发出请求:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
// Here I want to cancel Request , Request Url contains searchBar Texts
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSXMLParser *p = [[NSXMLParser alloc] initWithData:reqData];
[p setDelegate:self];
[p parse];
}];
}
您可以声明
@property (nonatomic, strong) NSOperationQueue *downloadQ;
然后,
self.downloadQ = [NSOperationQueue new];
self.downloadQ.name = @"download";
[NSURLConnection sendAsynchronousRequest:request queue:self.downloadQ completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSXMLParser *p = [[NSXMLParser alloc] initWithData:reqData];
[p setDelegate:self];
[p parse];
}];
如果你需要停下来
NSOperation *lastOp = [self.downloadQ.operations lastObject];
[lastOp cancel];
更新:
现在,最好使用NSURLSession,它对此具有适当的方法:
- (void)getTasksWithCompletionHandler:(void (^)(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks))completionHandler;
然后检查task.originalRequest.URL中是否有返回的任务,以查找要取消的任务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句