Czy ktoś może mi wyjaśnić składnię deklaracji metody? W tej funkcji zwracana jest liczba wierszy UIPickerView (interfejs użytkownika automatu w telefonie iPhone). Z mojego rozumienia metoda nazywa się „ pickerView
” i zwraca NSInteger.
Przekazuje wskaźnik do UIPickerview o nazwie „ pickerView
” ... po pierwsze, dlaczego metoda ma taką samą nazwę jak parametr?
Następnie jest parametr NSInteger zwany komponentem, który mówi nam, dla którego składnika liczymy wiersze. Logika decydująca o tym, co znajduje się w treści metody.
Co to jest ' numberOfRowsInComponent
? Wygląda na to, że opisuje wartość, którą zwracamy, ale znajduje się pośrodku parametrów.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
źródło
W Objective-C nazwa metody składa się ze wszystkich części deklaracji, które nie są argumentami ani typami. Nazwa tej metody byłaby zatem następująca:
Metoda byłaby odpowiednikiem funkcji w stylu C, która wyglądałaby następująco:
edycja: (podziękowania dla Jarret Hardie ):
źródło
Dodając do poprzednich odpowiedzi, chciałbym tylko powiedzieć, że metody Objective-C (lub wiadomości, jeśli wolisz) mają nazwy parametrów zewnętrznych i wewnętrznych .
Więc w tym przypadku:
numberOfRowsInComponent
jest nazwą zewnętrzną , tą, której użyłbyś podczas wywoływania tej metody z zewnątrz.I
component
jest wewnętrzną nazwą parametru, tą, której używasz do odniesienia się do parametru z wnętrza metody.Mam nadzieję, że to trochę wyjaśnia.
źródło
Wydaje mi się, że podpisy metody Objective-C są bardziej jak zdania. Każdy parametr zasługuje na swoją część w nazwie metody. Na przykład w C moglibyśmy mieć metodę ( setPersonData ) do ustawienia pewnych informacji o osobie:
aw Objective-C metoda byłaby bardziej opisowa ( setPersonName: andAge: andHeight:) , jak
źródło