是否建议将NSUrlConnection封装在gcd样式块中并在low_priority队列上运行它?NSURLConnection和盛大的中央调度
我需要确保我的连接不在主线程上发生,并且连接需要异步。我同时需要同时发出多个请求。
如果我去gcd路线,我不知道哪个线程NSUrlConnectionDelegate方法被调用。
NSURLConnection依赖于委托,所以一旦连接完成,无论处理它的包装类将需要调用它的调用者。我不能确定如何处理所有被调用的各种回调时的连接工作启动/结束:
- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)incrementalData;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
我是否应该打电话同步版本,但包裹在GCD块?如果我想取消呼叫,请使用'dispatch_suspend'?
dispatch_async(queue,^{
NSString* result = [self mySynchronousHttp:someURLToInvoke];
});
// If I need to cancel
dispatch_suspend(queue);
这是一个很好的代码示例,谢谢分享。如果我想在`AsyncURLConnection`中添加一个`cancel`方法来取消内部的`NSURLConnection`,你会如何推荐实现这个方法?添加一个iVar来保存连接,并简单地调用它的“取消”? – XJones 2011-04-16 03:19:48