Bagaimana saya menguji apakah suatu objek adalah turunan dari kelas tertentu di Objective-C? Katakanlah saya ingin melihat apakah objek a adalah turunan dari kelas b, atau kelas c, bagaimana cara saya melakukannya?
objective-c
futureelite7
sumber
sumber
class_getName
lebihNSStringFromClass
? Jika tidak ada, jawaban ini harus disesuaikan.Anda juga bisa menggunakannya
pada setiap NSObject
sumber
Apa artinya tentang isKindOfClass di Apple Documentation
Hati-hati saat menggunakan metode ini pada objek yang diwakili oleh gugus kelas. Karena sifat cluster kelas, objek yang Anda dapatkan kembali mungkin tidak selalu menjadi tipe yang Anda harapkan. Jika Anda memanggil metode yang mengembalikan cluster kelas, tipe yang tepat dikembalikan oleh metode adalah indikator terbaik dari apa yang dapat Anda lakukan dengan objek itu. Misalnya, jika metode mengembalikan pointer ke objek NSArray, Anda tidak boleh menggunakan metode ini untuk melihat apakah array bisa berubah, seperti yang ditunjukkan dalam kode berikut:
Jika Anda menggunakan konstruksi seperti itu dalam kode Anda, Anda mungkin berpikir tidak apa-apa untuk memodifikasi objek yang pada kenyataannya tidak boleh dimodifikasi. Melakukan hal itu dapat menimbulkan masalah bagi kode lain yang mengharapkan objek tetap tidak berubah.
sumber
-isKindOfClass:
&-isMemberOfClass:
tidak boleh digunakan untuk mengidentifikasi objek dalam cluster kelas.Jika Anda ingin memeriksa kelas tertentu maka Anda dapat menggunakannya
sumber
jika Anda ingin mendapatkan nama kelas cukup hubungi: -
sumber
Anda juga dapat memeriksa waktu berjalan. Masukkan satu breakpoint dalam kode dan di dalam (lldb) konsol tulis
Seperti ini..
sumber