是否建議將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