2010-11-17 5 views

Répondre

-1
- (void)funcOne:(int)a :(int)b 
+0

Merci d'avoir répondu – mamrezo

+0

accepter sa réponse! :-) – griotspeak

+1

Cette réponse est techniquement correcte, mais fondamentalement fausse. Le deuxième argument est laissé sans nom, et le nom complet de la méthode est laissé comme 'funcOne ::'. Il compile mais est tout aussi faux que si la méthode originale avait été définie comme 'void FuncOne (int a, int _);'. Il est techniquement correct de nommer une variable juste '_', mais ce n'est pas quelque chose qu'une personne sensée ferait. Laisser un argument sans nom dans Obj-C est tout aussi moche. – PeyloW

1

Si vous souhaitez utiliser une fonction « autonome » dans le code Objective-C, alors vous devez simplement utiliser la fonction c tout simplement que vous avez publié dans votre question.

Si vous posez des questions sur les méthodes de classe alors leur syntaxe est la suivante (parameterNames sont facultatifs):

// Instance method 
- (ReturnType) methodName:(ParameterType1)parameter1 parameterName2:(ParameterType2)parameter2; 
// Class method 
+ (ReturnType) methodName:(ParameterType1)parameter1 parameterName2:(ParameterType2)parameter2; 
3

Réponse courte est:

void FuncOne (int a , int b); 

Tout code valide C est également valable Objective-C . En prime, tout code C++ valide est également valide en Objective-C++.

Pour une réponse plus longue, je voudrais utiliser un meilleur exemple de fonction en utilisant une classe Java comme exemple:

public class Rect { 
    public void setColor(int color, boolean animated); 
} 

Cette classe et sa méthode serait en bonne Objective-C soit:

@interface Rect : NSObject { 
} 

-(void)setColor:(int)color animated:(BOOL)animated; 

@end 

Je suis sûr que vous pouvez comprendre la conversion, il se situe plutôt bien 1 à 1. Ce que vous devez faire dans le monde Objective-C est que chaque argument de méthode est nommé. Cela peut sembler une petite chose mais est là pour améliorer la lisibilité de votre code par un facteur de 1000! Prenez comme exemple l'exemple ci-dessus dans Java:

myRect.setColor(Color.RED, true); 

Que signifie le second argument? Activer la couleur, signale-t-elle que la couleur a un composant alpha à respecter (True pour la plupart des API JavaME), ou que la couleur doit être définie de manière animée? Vous ne pouvez pas être sûr à moins que vous ne le recherchiez dans la documentation.

Pour une bonne Objective-C vous n'avez ce problème:

[myRect setColor:RED animated:YES]; 

Vous devez être assez stupide pour ne pas comprendre ce qui se passe juste en lisant le code tel qu'il est.

Votre tâche la plus difficile à apprendre Objectif-C ne sera pas d'apprendre à convertir tout ce que vous savez maintenant 1 à 1 en Objective-C. Votre tâche la plus difficile sera d'apprendre l'état d'esprit d'Objective-C qui vous permet d'être beaucoup plus productif.

Questions connexes