où rect est défini précédemment NSRect, self est le NSView la méthode est appelée depuis, un NSColor objet obtenu à partir d'un imbriquée à l'appel de la méthode, et la constante de valeur booléenne YES.
c'est plusieurs méthodes, non? Nope. L'appel est inclus dans un ensemble unique de [] de sorte qu'il doit être d'une seule méthode. C'est une méthode unique avec 4 paramètres.
En Objective-C, les noms de méthode sont correctement appelé "sélecteurs", et peut être composé d'un ou de plusieurs pièces. Si la méthode accepte un ou plusieurs paramètres, chaque partie de la sélection est de la forme:
selectorFragmentName:(ParameterType)parameterName
Par exemple, vous verrez des déclarations de méthode comme celle de NSColor:
Dans ce cas, la méthode (sélecteur) nom colorWithDeviceRed:vert:bleu:alpha: — le reste signifie que le champ d'application (par exemple la méthode, + pour la classe), le type de retour (NSColor* ici), et le type et le nom de chaque paramètre.
CRITIQUE! Contrairement à la plupart des autres langues, vous ne pouvez pas surcharger les méthodes en Objective-C, ce qui signifie que vous ne pouvez pas avoir les deux méthodes avec le même sélecteur, mais un nombre différent de paramètres et/ou de l'ordre de types. Par exemple, vous ne pouvez pas avoir ces deux méthodes:
Depuis le sélecteur de nom pour les deux est initWithObjects: Objective-C ne fait pas de distinction entre les deux. Sélecteur de noms sont convertis en entiers uniques pour extrêmement rapide recherche, ce qui est bénéfique dans la dynamique de l'exécution, mais une déception pour les personnes qui attendent la surcharge de méthode. Le cas le plus courant de surcharge de langues comme Java est des constructeurs, ce qui est un non-problème en Objective-C en raison de la alloc/init modèle. Pour les autres méthodes, le choix des noms uniques permet d'éviter le problème.
À partir d'un point de vue style, étant donné que les paramètres sont intercalés dans le sélecteur de la méthode, Objective-C programmeurs (et Xcode) souvent aligner les pièces de long sélecteurs dans le côlon pour des raisons de lisibilité, tant pour la déclaration/définition:
Jeff décrit avec précision ce que les méthodes ressemblent. Si vous voulez voir à quoi il ressemblerait comme une fonction C, il ressemblerait à quelque chose comme:
void drawRoundedRect_inView_withColor_fill(MyObject* self, SEL _cmd,NSRect aRect,NSView* aView,NSColor* color, BOOL fill );
Le paramètre "nom" tous se rassemblent pour former un seul nom de la méthode, et deux paramètres cachés, de soi et de _cmd sont ajoutés à l'avant.
Vous pouvez écrire la déclaration en tant que tel:
L'appel suivant (avec 4 paramètres) pourrait ressembler à:
où
rect
est défini précédemment NSRect,self
est le NSView la méthode est appelée depuis, unNSColor
objet obtenu à partir d'un imbriquée à l'appel de la méthode, et la constante de valeur booléenneYES
.Nope. L'appel est inclus dans un ensemble unique de [] de sorte qu'il doit être d'une seule méthode. C'est une méthode unique avec 4 paramètres.
OriginalL'auteur Jeff Hellman
En Objective-C, les noms de méthode sont correctement appelé "sélecteurs", et peut être composé d'un ou de plusieurs pièces. Si la méthode accepte un ou plusieurs paramètres, chaque partie de la sélection est de la forme:
Par exemple, vous verrez des déclarations de méthode comme celle de NSColor:
Dans ce cas, la méthode (sélecteur) nom colorWithDeviceRed:vert:bleu:alpha: — le reste signifie que le champ d'application (par exemple la méthode, + pour la classe), le type de retour (NSColor* ici), et le type et le nom de chaque paramètre.
CRITIQUE! Contrairement à la plupart des autres langues, vous ne pouvez pas surcharger les méthodes en Objective-C, ce qui signifie que vous ne pouvez pas avoir les deux méthodes avec le même sélecteur, mais un nombre différent de paramètres et/ou de l'ordre de types. Par exemple, vous ne pouvez pas avoir ces deux méthodes:
Depuis le sélecteur de nom pour les deux est initWithObjects: Objective-C ne fait pas de distinction entre les deux. Sélecteur de noms sont convertis en entiers uniques pour extrêmement rapide recherche, ce qui est bénéfique dans la dynamique de l'exécution, mais une déception pour les personnes qui attendent la surcharge de méthode. Le cas le plus courant de surcharge de langues comme Java est des constructeurs, ce qui est un non-problème en Objective-C en raison de la alloc/init modèle. Pour les autres méthodes, le choix des noms uniques permet d'éviter le problème.
À partir d'un point de vue style, étant donné que les paramètres sont intercalés dans le sélecteur de la méthode, Objective-C programmeurs (et Xcode) souvent aligner les pièces de long sélecteurs dans le côlon pour des raisons de lisibilité, tant pour la déclaration/définition:
et de l'invocation:
L'espace n'est pas pertinent pour le compilateur. Si cela rend plus facile pour vous de lire et de comprendre, certainement l'utiliser.
OriginalL'auteur Quinn Taylor
Jeff décrit avec précision ce que les méthodes ressemblent. Si vous voulez voir à quoi il ressemblerait comme une fonction C, il ressemblerait à quelque chose comme:
Le paramètre "nom" tous se rassemblent pour former un seul nom de la méthode, et deux paramètres cachés, de soi et de _cmd sont ajoutés à l'avant.
OriginalL'auteur Peter N Lewis