Sejauh pengetahuan saya, Objective-C tidak mendukung metode overloading. Apa yang bisa menjadi alternatif untuk ini di Objective-C? Atau haruskah saya selalu menggunakan nama metode yang berbeda?
ios
objective-c
overloading
suse
sumber
sumber
Mungkin perlu disebutkan bahwa bahkan jika Objective-C tidak mendukung metode overloading, Dentang + LLVM mendukung fungsi overloading untuk C. Meskipun tidak sesuai dengan yang Anda cari, itu bisa terbukti berguna dalam beberapa situasi (misalnya, ketika menerapkan versi yang sedikit diretas (bertentangan dengan enkapsulasi) dari pola desain pengunjung )
Berikut adalah contoh sederhana tentang cara kerja kelebihan fungsi berfungsi:
sumber
id
danisKindOfClass:
pada saat pembuangan, adalah cerita yang berbeda ...id
danisKindOfClass:
membahas sebagian besar skenario praktis. Salah satu alasan Anda mungkin lebih suka kelebihan beban, adalah pemilihan otomatis dari jenis yang paling spesifik dipenuhi, yang akan menyebabkan overhead kecil untuk mempertahankan dengan pengecekan tipe eksplisit.David benar dalam metode overloading yang tidak didukung di Objective-C. Ini mirip dengan PHP dalam pengertian itu. Seperti yang dia tunjukkan, adalah praktik umum untuk mendefinisikan dua atau lebih metode dengan tanda tangan yang berbeda dalam cara dia contoh. Namun, dimungkinkan juga untuk membuat satu metode menggunakan tipe "id". Melalui tipe "id", Anda dapat mengirim objek apa pun (dan primitif apa pun menggunakan kelas NSNumber) ke metode dan kemudian dari dalam metode itu sendiri Anda dapat menguji jenisnya dan melemparkan pengecualian yang sesuai jika perlu. Meskipun ini memiliki hit kinerja kecil, kemungkinan besar akan nominal atau tidak signifikan kecuali Anda sedang memproses data dalam jumlah besar.
Ini juga merupakan tempat yang indah untuk mengimplementasikan protokol untuk menegakkan tipe objek, yang dapat dilakukan seperti:
sumber