Apa perbedaan antara isKindOfClass:(Class)aClass
danisMemberOfClass:(Class)aClass
fungsinya? Saya tahu ini adalah sesuatu yang kecil seperti, satu bersifat global sementara yang lainnya adalah pertandingan kelas yang tepat tetapi saya perlu seseorang untuk menentukan mana yang tolong.
Dalam Swift isKind(of aClass: AnyClass)
dan isMember(of aClass: AnyClass)
.
sumber
isKindOfClass:
menunjukkan apakah suatu objek mewarisi dari kelas yang diberikanisMemberOfClass:
menunjukkan apakah suatu objek adalah turunan dari kelas yang diberikan.sumber
Seharusnya
kemudian
Pada dasarnya,
-isMemberOfClass:
itu benar jika turunannya persis dari kelas yang ditentukan, sedangkan-isKindOfClass:
benar jika turunannya persis dari kelas yang ditentukan atau jika salah satu leluhur turunan adalah dari kelas yang ditentukan.-isMemberOfClass:
jarang digunakan.sumber
sumber
isKindOfClass-> mengembalikan YA ketika objek adalah turunan dari kelas itu atau turunan dari kelas yang diwarisi darinya.
isMemberOfClass: mengembalikan YA ketika objek adalah turunan dari kelas itu tetapi Tidak dalam kasus: turunan dari kelas yang diwarisi darinya.
Contoh cukup baik dalam jawaban jtbandes.
sumber
Karena klaster kelas, isMemberOfClass dapat memberi Anda jawaban yang mungkin tidak Anda harapkan. Dalam banyak kasus, pilihan terbaik Anda kemungkinan besar adalah - (BOOL) conformToProtocol: (SEL) aSelector atau - (BOOL) conformsToProtocol: (Protocol *) aProtocol. Yaitu, lebih baik untuk menguji ini jika mereka dapat menjawab kebutuhan Anda daripada menguji kelas / subkelas.
Lihat apple doc untuk kelas dan protokol NSObject:
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/cl/NSObject
http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intf/NSObject
sumber