由于我是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:])'
我在这里错过了什么?
答案 0 :(得分:9)
我相信你没有为你的线程提供足够的参数。您实施的方法具有签名downloadFile:withDict:
,但您只提供downloadFile:
。你应该给它正确的选择器名称。
请记住,无论如何您可能会遇到麻烦 - NSThread class reference指定您以这种方式调用的方法必须只接受一个参数。我建议将你的两个参数转换为你的方法解析出来的单个NSDictionary,或者重新思考你如何调度这个线程。
答案 1 :(得分:3)
方法名称为downloadFile:withDict:
,而不是downloadFile :.