Подтвердить что ты не робот

Как определить, является ли класс B подклассом класса A?

Похоже, что если вы разрабатываете для Mac OS, NSObject имеет метод isSubclassOfClass. Но когда я проверяю ссылку класса iOS для того же класса, у нее нет метода (и Xcode жалуется на метод).

Мои текущие решения заключаются в том, чтобы поместить там метод -(void)iAmClassB и выполнить respondsToSelector:iAmClassB, но это кажется надуманным. Я что-то пропустил?

4b9b3361

Ответ 1

Он доступен из версии iOS 2.0 и более поздней версии SDK

if ([ClassB isSubclassOfClass:[ClassA class]]) {


    NSLog(@"yes ClassB is SubclassOfClass of ClassA");

}       

Documentation:

isSubclassOfClass:

Возвращает логическое значение, указывающее, является ли принимающий класс подкласс или идентичный данному классу.

   + (BOOL)isSubclassOfClass:(Class)aClass

Параметры

aClass

Объект класса.

Возвращаемое значение

YES, если принимающий класс является подклассом - или идентичным - aClass, иначе NO.

Доступность

Доступен в iOS 2.0 и более поздних версиях.

Ответ 2

id a= ...;
if([a isKindOfClass:[A class]]){
     ...
}

должен выполнить эту работу. Вам редко приходится видеть, действительно ли это подкласс. См. здесь.