2011-02-03 18 views
5

Như Tôi khá mới để ObjC tôi bị mắc kẹt đến vấn đề sau:Objective-C sử dụng chủ đề gây ra: mục tiêu không thực hiện selector

Tôi có một chức năng downloadFile

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

Tôi muốn bắt đầu này như một chủ đề, và do đó tôi sử dụng dòng mã này:

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

Nó ném cho tôi những lỗi sau:

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

Tôi đang thiếu gì ở đây?

Trả lời

9

Tôi tin rằng bạn không cung cấp đủ đối số cho chuỗi của mình. Phương pháp bạn triển khai có chữ ký downloadFile:withDict:, nhưng bạn chỉ cung cấp downloadFile:. Bạn nên đặt tên cho bộ chọn chính xác.

Hãy nhớ rằng có thể bạn sẽ gặp sự cố - NSThread class reference chỉ định rằng các phương pháp bạn gọi theo cách này phải chỉ lấy một đối số. Tôi khuyên bạn nên chuyển đổi hai đối số của bạn thành một NSDictionary duy nhất mà phương thức của bạn phân tích hoặc xem xét lại cách bạn đang gửi luồng này.

3

Tên phương pháp là downloadFile:withDict: và không downloadFile:.

Các vấn đề liên quan