2009-02-26 9 views
44

J'essaie de construire une application iPhone. J'ai créé une méthode
comme ceci:Comment puis-je appeler une méthode en Objective-C?

- (void)score { 
    // some code 
} 

et j'ai essayé de l'appeler dans une autre méthode comme ceci:

- (void)score2 { 
    @selector(score); 
} 

Mais cela ne fonctionne pas. Alors, comment puis-je appeler une méthode correctement?

Répondre

23

Je pense que ce que vous essayez de faire est:

-(void) score2 { 
    [self score]; 
} 

La syntaxe [object message] est la façon normale d'appeler une méthode objective-c. Je pense que la syntaxe @selector est utilisée lorsque la méthode à appeler doit être déterminée au moment de l'exécution, mais je ne connais pas suffisamment le pour vous donner plus d'informations à ce sujet.

+0

@selector vous donne le « nom » d'une méthode sous une forme qui Objectiv e-C peut utiliser pour envoyer des messages. Il est utilisé de manière analogue à un pointeur de fonction. – Chuck

27

Je vous suggère de lire The Objective-C Programming Language. La partie sur la messagerie est spécifiquement ce que vous voulez ici, mais le tout vous aidera à démarrer. Après cela, essayez peut-être quelques tutoriels pour avoir une idée avant de vous lancer dans la création de vos propres applications.

+6

@fijiaaron: Je n'ai pas dit "RTFM". J'ai dit que cette question était à un niveau si élémentaire que s'il devait le demander, il trouverait très frustrant son expérience en Objective-C et en lisant que le guide d'introduction était un bon début dans la bonne voie. Apprenez à un homme à pêcher, vous savez. Personnellement, je trouve ce genre de réponse beaucoup plus utile qu'un code-vomi de qualité inconnue. – Chuck

5

Utilisez ceci:

[self performSelector:@selector(score) withObject:nil afterDelay:0.2]; 
+2

Je me demandais depuis un moment si l'ajout de retard à une méthode était possible. Jamais eu l'obligation de le faire, mais toujours se demander si cela pourrait être fait et comment cela serait fait. :) joli. Entré pour une chose et fini par trouver quelque chose d'utile. – Jiraheta

16

appeler la méthode est comme ceci

[className methodName] 

si vous voulez appeler la méthode dans la même classe, vous pouvez utiliser l'auto

[self methodName] 

tout ce qui précède est que votre méthode ne prenait aucun paramètres

si votre méthode prend des paramètres vous devra le faire comme ça

[self methodName:Parameter] 
+0

Cela semble clair et comprend un paramètre, ce qui est utile, même si ce n'est pas pour l'exemple simple "score". – Matt

1
[self score]; instead of @selector(score) 
Questions connexes