У меня есть класс (но нет экземпляра) и мне нужно знать, соответствует ли он определенному протоколу. Однако Class может быть разделен на несколько классов, и class_conformsToProtocol () игнорирует протоколы, объявленные для суперклассов.
Я мог бы просто использовать class_getSuperclass () и рекурсивно проверять все классы в иерархии вверх, пока суперкласс не станет нулевым. Однако мне интересно, может ли это быть неэффективным для глубоко вложенных иерархий классов, и, может быть, есть более хороший способ сделать это?
Другими словами, как метод NSObject conformsToProtocol лучше всего реализовать с использованием методов времени выполнения Objective C, чтобы он находил протоколы на суперклассах?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Если я на правильном пути с рекурсивным повышением иерархии классов, просто дайте мне знать.
источник
self.delegate
реализует несколько протоколов, и я хочу проверить, соответствует ли он другим, чем его класс.[someObject conformsToProtocol:@protocol(MyProtocol)]
.Или, если это общий указатель, например:
ты можешь использовать:
источник