Saya ingin memeriksa apakah suatu objek (mis. someObject
) Dapat dialihkan (dapat diubah-ubah) ke variabel jenis lain (mis SpecifiedType
.). Di Jawa, saya bisa menulis:
someObject instanceof SpecifiedType
Pertanyaan terkait adalah menemukan apakah tipe runtime suatu objek sama dengan tipe lain. Di Jawa, saya bisa menulis:
someObject.getClass().equals(SpecifiedType.class)
Bagaimana ini bisa dilakukan di Objective-C?
Jawaban:
Cobalah
[myObject class]
untuk mengembalikan kelas suatu objek.Anda dapat membuat perbandingan yang tepat dengan:
tetapi tidak dengan menggunakan
MyClass
pengidentifikasi langsung .Demikian pula, Anda dapat menemukan apakah objek tersebut adalah subkelas dari kelas Anda dengan:
seperti yang disarankan oleh Jon Skeet dan zoul.
sumber
if ([myObject isMemberOfClass:[MyClass class]])
Dari Wikipedia :
isKindOfClass:
akan paling dekat denganinstanceof
, oleh suara itu.sumber
Lihat metode isKindOfClass: dalam dokumentasi NSObject . (Kata peringatan yang biasa untuk pertanyaan seperti itu adalah bahwa memeriksa kelas objek sering merupakan tanda melakukan sesuatu yang salah.)
sumber
+ (BOOL)conformsToProtocol:(Protocol *)aProtocol
.