2011-02-03 11 views
5

Ponieważ jestem całkiem nowy ObjC utknąłem na następującą kwestię:Objective-C za pomocą gwintu powoduje: cel nie implementuje selektor

Mam funkcji downloadFile

-(void) downloadFile:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options  
{ 
    //do stuff 
} 

chcę uruchomić to jako nici, i dlatego używam tej linii kodu:

NSThread* dLoad = [[NSThread alloc] initWithTarget:self selector:@selector(downloadFile:) object:nil]; 
[dLoad start]; 

rzuca mi następujący błąd:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSThread initWithTarget:selector:object:]: target does not implement selector (*** -[LaunchDownload downloadFile:])' 

Czego tu brakuje?

Odpowiedz

9

Uważam, że nie dostarczasz wystarczającej liczby argumentów do swojego wątku. Wprowadzona metoda ma podpis downloadFile:withDict:, ale dostarczasz tylko downloadFile:. Powinieneś nadać mu poprawną nazwę selektora.

Należy pamiętać, że prawdopodobnie i tak napotkasz kłopoty - NSThread class reference określa, że ​​metody wywoływane w ten sposób muszą przyjmować tylko jeden argument. Poleciłbym albo przekonwertowanie twoich dwóch argumentów na pojedynczy NSDictionary, który twoja metoda analizuje, albo przemyślenie sposobu wysyłania tego wątku.

3

Nazwa metody to downloadFile:withDict:, a nie plik do pobrania:.

Powiązane problemy