2010-06-27 10 views
1

J'ai le code de travail: [self performSelector: @selector (doSomething)];IPhone performSelector question

mais lorsque je change cette ligne:

[self performSelector: @selector (doSomething) withObject: néant afterDelay: 1,0];

il signale une erreur - sélecteur non reconnu ....

pourriez-vous me dire quel est le problème?

merci

+0

envoyez plus de code, s'il vous plaît. Si le .. @ selector (doSomething :) ne fonctionne pas, quelque chose ne va vraiment pas avec vos méthodes – vodkhang

Répondre

5

Si vous avez changé votre méthode pour prendre un paramètre d'objet, vous devez changer l'argument @selector() pour inclure le « : », par exemple, @selector(doSomething:)

Cela fonctionne:

- (void) foo 
{ 
    NSLog(@"foo!"); 
} 


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{   
    [self performSelector: @selector(foo) withObject: nil afterDelay: 0.1]; 
} 

Vous pouvez donc passer un sélecteur qui ne prend aucun paramètre à performSelector:withObject:afterDelay: et je présume qu'il ignore le withObject: param dont je n'étais pas sûr à 100%.

+0

hmm. votre commentaire à une autre réponse proposée suggère que quelque chose d'autre se passe. Postez le code de la méthode doSomething? – Dad

+1

Peut-être nous donner le message d'erreur réel, dit-il _which_ selector n'est pas reconnu? – Dad

1

Il semble que votre problème est que votre sélecteur est doSomething et non doSomething:. Sans le :, il n'y a nulle part dans le message pour insérer un objet, même nil.

+0

[self performSelector: @selector (doSomething :) withObject: nil afterDelay: 1.0]; toujours la même erreur – user349302

+0

Voir ci-dessous, code de test simple qui montre que vous ne semblez pas avoir besoin d'un sélecteur qui prend un objet en utilisant 'peformSelector: withObject: afterDelay:' ... (je n'étais pas sûr sur cela a donc dû écrire un test rapide pour confirmer). – Dad

0

Est-ce que vous êtes toujours là? Vous pourriez essayer d'envoyer un message à un NSZombie.