Saya memiliki Kelas (tetapi tidak ada instance) dan perlu tahu apakah itu sesuai dengan protokol tertentu. Namun, Kelas dapat disubklasifikasikan beberapa kali dan class_conformsToProtocol () mengabaikan protokol yang dideklarasikan pada superclasses.
Saya hanya bisa menggunakan class_getSuperclass () dan secara rekursif memeriksa semua kelas dalam hierarki ke atas sampai superclass nil. Namun saya bertanya-tanya apakah itu mungkin tidak efisien untuk hierarki kelas yang sangat bersarang, dan mungkin ada cara yang lebih baik untuk melakukan itu?
Dengan kata lain, bagaimana metode NSObject conformTToProtocol terbaik diimplementasikan menggunakan metode runtime Objective-C sehingga menemukan protokol pada superclasses?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Jika saya berada di jalur yang benar dengan secara hirarki naik kelas, beri tahu saya.
sumber
self.delegate
mengimplementasikan beberapa protokol dan saya ingin memeriksa apakah itu sesuai dengan yang lain daripada kelasnya.[someObject conformsToProtocol:@protocol(MyProtocol)]
.Atau, jika itu adalah pointer umum, seperti:
kamu bisa memakai:
sumber