Objective-c, использующий поток, вызывает: цель не реализует селектор - PullRequest
6 голосов
/ 03 февраля 2011

Поскольку я довольно новичок в ObjC, я застрял в следующей проблеме:

У меня есть функция downloadFile

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

Я хочу начать это как поток, и поэтому я использую эту строку кода:

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

Это выдает мне следующую ошибку:

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

Что мне здесь не хватает?

Ответы [ 2 ]

9 голосов
/ 03 февраля 2011

Я полагаю, что вы не предоставляете достаточно аргументов для своей темы.Реализованный вами метод имеет подпись downloadFile:withDict:, но вы предоставляете только downloadFile:.Вы должны дать ему правильное имя селектора.

Имейте в виду, что в любом случае у вас могут возникнуть проблемы - ссылка на класс NSThread указывает, что методы, которые вы вызываете таким образом, должны принимать только один аргумент.Я бы порекомендовал либо преобразовать два ваших аргумента в один NSDictionary, который анализирует ваш метод, либо переосмыслить способ отправки этого потока.

3 голосов
/ 03 февраля 2011

Имя метода downloadFile:withDict:, а не downloadFile:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...