Saya telah membaca beberapa posting tentang sintaks metode Objective-C tapi saya kira saya tidak mengerti banyak nama untuk suatu metode.
Saya mencoba membuat metode yang disebut getBusStops
dengan NSString
dan NSTimeInterval
parameter serta tipe pengembalian NSMutableArray
. Ini adalah bagaimana saya telah membangun metode tetapi jelas mendapatkan kesalahan saat runtime:
- (NSMutableArray *)getBusStops:(NSString *)busStop
(NSTimeInterval *)timeInterval;
Saya melihat contoh lain dengan metode:
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
Saya tidak mengerti mengapa metode ini memiliki nama metode untuk setiap parameter. Haruskah saya melakukan hal yang sama dengan sesuatu seperti:
- (NSMutableArray *)getBusStops:(NSString *)busStop
forTime:(NSTimeInterval *)timeInterval
forTime
digunakan untuk apa?Iya; sintaks metode Objective-C seperti ini karena beberapa alasan; salah satunya adalah agar jelas parameter apa yang Anda tentukan. Misalnya, jika Anda menambahkan objek ke
NSMutableArray
pada indeks tertentu, Anda akan melakukannya menggunakan metode:Metode ini disebut
insertObject:atIndex:
dan jelas bahwa suatu objek sedang dimasukkan pada indeks yang ditentukan.Dalam praktiknya, menambahkan string "Halo, Dunia!" pada indeks 5 dari yang
NSMutableArray
dipanggilarray
akan disebut sebagai berikut:Ini juga mengurangi ambiguitas antara urutan parameter metode, memastikan bahwa Anda melewati parameter objek terlebih dahulu, lalu parameter indeks. Ini menjadi lebih berguna ketika menggunakan fungsi yang mengambil sejumlah besar argumen, dan mengurangi kesalahan dalam meneruskan argumen.
Lebih jauh, konvensi penamaan metode sedemikian karena Objective-C tidak mendukung overloading; namun, jika Anda ingin menulis metode yang melakukan pekerjaan yang sama, tetapi menggunakan tipe data yang berbeda, ini dapat dilakukan; ambil, misalnya,
NSNumber
kelas; ini memiliki beberapa metode pembuatan objek, termasuk:+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
Dalam bahasa seperti C ++, Anda cukup membebani metode angka untuk memungkinkan berbagai tipe data dilewatkan sebagai argumen; Namun, dalam Objective-C, sintaks ini memungkinkan beberapa varian berbeda dari fungsi yang sama untuk diimplementasikan, dengan mengubah nama metode untuk setiap varian fungsi.
sumber
Teks sebelum setiap parameter adalah bagian dari nama metode. Dari contoh Anda, nama metode sebenarnya
Masing-masing: mewakili argumen. Dalam pemanggilan metode, nama metode dipisah pada: s dan argumen muncul setelah: seg
sumber
untuk membuat metode:
untuk panggilan metode:
sumber
saya:
seperti dalam bahasa lain kami menggunakan sintaks berikut yang tidak berlaku
add(int one, int second)
tetapi cara menugaskan argumenOBJ_c
berbeda seperti yang dijelaskan di atassumber