2011-02-03 17 views
5

ObjC için oldukça yeni olduğum için şu soruna takıldım:Nesne-c kullanarak iplik nedenleri: hedef seçici kullanmıyor

Bir işlevim var. xilexz

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

Bunu bir iş parçacığı olarak başlatmak istiyorum ve bu yüzden bu satırı kullanıyorum :

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

Aşağıdaki hatayı atar:

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

Burada ne eksik?

cevap

9

İpucunuza yeterli argüman sağlamadığınızı düşünüyorum. Uyguladığınız yöntemde downloadFile:withDict: imzası var, ancak yalnızca downloadFile: sağlıyorsunuz. Doğru seçici adını vermelisiniz.

Zaten büyük olasılıkla bir sorun yaşayacağınızı unutmayın - NSThread class reference, bu şekilde çağırdığınız yöntemlerin yalnızca bir bağımsız değişken alması gerektiğini belirtir. İki bağımsız değişkeninizi tek bir NSDictionary öğesine dönüştürmenizi öneririz. Bu yöntem, yönteminizin bu iş parçacığını nasıl dağıttığını veya ayrıldığını yeniden düşünür.

3

Yöntem adı, downloadFile:withDict: ve downloadFile: öğesinin adıdır.