多线程从网站下载数据

时间:2012-04-06 10:42:41

标签: objective-c multithreading grand-central-dispatch

我正在做一个应用程序,它通过请求将信息下载到网站,给我回复和HTML并解析这些数据,我获得了我的应用信息。为了下载我正在使用的数据,使用一个url,其中包含最终请求所需的所有参数。

NSData *data = [NSData dataWithContentsOfURL:url];

NSString* htmlString;
htmlString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
[self parserHTML:htmlString];  // here I fill a NSArray with the info parsed
[self searchSomething:htmlString];  // continue filling the NSArray

...

下载数据和解析HTML的任务需要很长时间。

我可以做些什么来加快速度?大中央派遣?如果是这样,我怎么能使用它,因为我使用它并且它不起作用,因为NSSArray是空的:

dispatch_queue_t downloadQueue = dispatch_queue_create("pharmacy downloader", NULL);
dispatch_async(downloadQueue, ^{ 
    NSData *data = [NSData dataWithContentsOfURL:urlReal];

    NSString* htmlString;
    htmlString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    [self parserHTML:htmlString];  // here I fill a NSArray with the info parsed
    [self searchSomething:htmlString];  // continue filling the NSArray
});
dispatch_release(downloadQueue);

如果我不使用GCD,它可以工作。可能是什么问题??

感谢您的帮助。我完全失去了! :S

1 个答案:

答案 0 :(得分:0)

改为使用NSURLDownloadNSURLConnection

对于某些示例代码,您可以查看QuickLookDownloader