Kann mir jemand diese Syntax der Methodendeklaration erklären? In dieser Funktion wird die Anzahl der Zeilen eines UIPickerView (Spielautomaten-Benutzeroberfläche auf dem iPhone) zurückgegeben. pickerView
Nach meinem Verständnis heißt die Methode ' ' und gibt eine NSInteger zurück.
Es übergibt einen Zeiger auf die UIPickerview mit dem Namen ' pickerView
' ... zuerst, warum heißt die Methode den gleichen Namen wie der Parameter?
Als nächstes gibt es den NSInteger-Parameter namens component, der uns sagt, für welche Komponente wir die Zeilen zählen. Die Logik, um zu entscheiden, welche sich im Hauptteil der Methode befindet.
Was ist ' numberOfRowsInComponent
? Es scheint den Wert zu beschreiben, den wir zurückgeben, aber es befindet sich in der Mitte der Parameter.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
quelle
In Objective-C besteht der Name einer Methode aus allen Teilen der Deklaration, die keine Argumente und Typen sind. Der Name dieser Methode wäre daher:
Die Methode würde einer C-Funktion entsprechen, die wie folgt aussieht:
edit: (danke an Jarret Hardie ):
quelle
Zusätzlich zu den vorherigen Antworten möchte ich nur sagen, dass Objective-C-Methoden (oder Nachrichten, wenn Sie dies bevorzugen) externe und interne Parameternamen haben.
Also in diesem Fall:
numberOfRowsInComponent
ist der externe Name, den Sie verwenden würden, wenn Sie diese Methode von außen aufrufen.Und
component
ist der interne Name des Parameters, den Sie verwenden, um auf den Parameter innerhalb der Methode zu verweisen.Hoffe das klärt es ein bisschen auf.
quelle
Es scheint mir, dass Signaturen der Objective-C-Methode eher wie Sätze sind. Jeder Parameter verdient einen Teil im Methodennamen. In C könnten wir beispielsweise eine Methode ( setPersonData ) zum Festlegen einiger Informationen über die Person haben:
und in Objective-C wäre die Methode aussagekräftiger ( setPersonName: andAge: andHeight :) , wie z
quelle