这是我的代码:
dispatch_async(queue,^(voID) { // Request is ASIhttpRequest. [request startSynchronous]; // Parse JsON. NSArray *array = [[request responseData] objectFromJsONDataWithParSEOptions:JKParSEOptionLooseUnicode]; // Callback on the main queue to update UI. dispatch_async(dispatch_get_main_queue(),^(voID) { callbackBlock(array); }); });
编辑:我使用ASIhttpRequest的原因是我需要修改OAuth的请求头,并使用POST方法来上传图像.
解决方法 所以你换了这个- (voID)dodownload { NSURL *url = [NSURL URLWithString:@"http://foobar.com"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; connection = [[NSURLConnection alloc] initWithRequest:aURLRequest delegate:self]; receivedData = [[NSMutableData data] retain];}- (voID)connection:(NSURLConnection *)connection dIDReceiveData:(NSData *)data { [_receivedData appendData:data];}- (voID)connectionDIDFinishLoading:(NSURLConnection *)connection { NSArray *array = [_receivedData objectFromJsONDataWithParSEOptions:JKParSEOptionLooseUnicode]; callbackBlock(array); }
有了这个 –
- (voID)dodownload { NSURL *url = [NSURL URLWithString:@"http://foobar.com"]; ASIhttpRequest *request = [ASIhttpRequest requestWithURL:url]; dispatch_queue_t queue = dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0); dispatch_async(queue,^(voID) { [request startSynchronous]; NSArray *array = [[request responseData] objectFromJsONDataWithParSEOptions:JKParSEOptionLooseUnicode]; // Callback on the main queue to update UI. dispatch_async(dispatch_get_main_queue(),^(voID) { callbackBlock(array); }); });}
和来自ASIhttpRequest的10,000行代码.
它有什么?
NSURLConnection是完全异步的,使用GCD,缓存,自动zip /解压缩等.
因为这个原因,并且完全依靠你提供的(可能不完整的)信息,我会说这是一个非常糟糕的代码.
当然,上下文是一切 – 您可能真的非常有理由重新实现Apple提供的库代码已经存在的功能.
总结以上是内存溢出为你收集整理的objective-c – 与Grand Central Dispatch的互联网请求的良好格局?全部内容,希望文章能够帮你解决objective-c – 与Grand Central Dispatch的互联网请求的良好格局?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)