2012-04-06 14 views
0

Ich mache eine App, die Informationen über eine Anfrage an eine Website herunterlädt, gibt mir zurück und HTML und Parsing diese Daten erhalte ich meine App Info. Zum Herunterladen dieser Daten verwende ich eine URL mit allen Parametern, die die Anfrage am Ende benötigt.Multithreading zum Herunterladen von Daten von einer Website

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 

... 

Die Aufgabe zum Herunterladen der Daten und Parser HTML dauert lange.

Was kann ich tun, um das schneller zu machen? Grand Central Versand? Wenn ja, wie kann ich es verwenden, weil ich dies mit und es nicht funktioniert, weil die NSSArray leer ist:

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); 

Wenn ich GCD nicht funktioniert. Was kann das Problem sein?

Danke für Ihre Hilfe. Ich bin total verloren !!! : S

+0

einen Blick darauf werfen können, wenn Sie das Array definieren Sie, füllen Sie bei der Analyse? Ist das eine Eigenschaft des Objekts? Vielleicht ist das Parsing zu diesem Zeitpunkt noch nicht abgeschlossen, Sie greifen auf das Array zu. –

Antwort

Verwandte Themen