Przeczytałem kilka postów na temat składni metody Objective-C, ale wydaje mi się, że nie rozumiem wielu nazw dla metody.
Próbuję utworzyć metody nazywanej getBusStops
ze NSString
i NSTimeInterval
parametrów oraz typ zwracanej NSMutableArray
. Oto jak skonstruowałem tę metodę, ale oczywiście powoduje ona błędy w czasie wykonywania:
- (NSMutableArray *)getBusStops:(NSString *)busStop
(NSTimeInterval *)timeInterval;
Widziałem inny przykład z metodą:
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
Nie rozumiem, dlaczego ta metoda ma nazwę metody dla każdego parametru. Czy powinienem zrobić to samo z czymś takim:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
forTime
służy?Tak; składnia metody Objective-C jest taka z kilku powodów; jeden z nich jest taki, aby było jasne, jakie parametry określasz. Na przykład, jeśli dodajesz obiekt do
NSMutableArray
określonego indeksu, możesz to zrobić za pomocą metody:Ta metoda nazywa się
insertObject:atIndex:
i jest jasne, że obiekt jest wstawiany pod określonym indeksem.W praktyce dodanie ciągu „Hello, World!” pod indeksem 5
NSMutableArray
wezwaniaarray
będzie wyglądał następująco:Zmniejsza to również niejasności między kolejności parametrów metody, zapewniając, że zdasz parametr obiektu pierwsze, następnie parametr indeksu. Staje się to bardziej przydatne w przypadku korzystania z funkcji, które pobierają dużą liczbę argumentów i zmniejsza błędy w przekazywaniu argumentów.
Ponadto konwencja nazewnictwa metod jest taka, ponieważ Objective-C nie obsługuje przeciążania; jeśli jednak chcesz napisać metodę, która wykonuje to samo zadanie, ale przyjmuje różne typy danych, można to zrobić; weźmy na przykład
NSNumber
klasę; ma kilka metod tworzenia obiektów, w tym:+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
W języku takim jak C ++ wystarczy przeciążyć metodę number, aby umożliwić przekazywanie różnych typów danych jako argumentu; jednak w Objective-C składnia ta pozwala na implementację kilku różnych wariantów tej samej funkcji, poprzez zmianę nazwy metody dla każdego wariantu funkcji.
źródło
Tekst przed każdym parametrem jest częścią nazwy metody. Z twojego przykładu, nazwa metody to w rzeczywistości
Każdy: reprezentuje argument. W wywołaniu metody nazwa metody jest dzielona na: si argumenty pojawiają się po: seg
źródło
dla metody tworzenia:
na wezwanie metoda:
źródło
mnie:
tak jak w innych językach używamy następującej składni void,
add(int one, int second)
ale sposób przypisywania argumentówOBJ_c
jest inny niż opisano powyżejźródło