Возможно, есть лучшее решение, но грубая сила должна это сделать. class_getSuperclass возвращает объект Class
для данного суперкласса данного Class
объекта.Когда вы попадаете в корневой класс, он возвращает Nil
.
for (int i = 0; i < numClasses; i++) {
Class class = classes[i];
Class superclass = class_getSuperclass(class);
while( superclass != Nil ){
if( superclass == MySpecificWrapperClass ){
// Got one!
break;
}
superclass = class_getSuperclass(superclass);
};
}
. Предполагается, что вы хотите проверить иерархию всю для данного класса, т. Е. Вы хотите, чтобы каждыйкласс, у которого есть ваш класс где-либо в его предках.Если вы заботитесь только о прямых подклассах, очевидно, вам нужно всего лишь один раз позвонить class_getSuperclass
.