Как проверить, является ли объект экземпляром определенного класса в Objective-C? Допустим, я хочу посмотреть, является ли объект a экземпляром класса b или класса c, как мне это сделать?
objective-c
futureelite7
источник
источник
class_getName
надNSStringFromClass
? Если его нет, этот ответ следует скорректировать.Вы также можете использовать
на любом NSObject
источник
Что значит про isKindOfClass в документации Apple
Будьте осторожны при использовании этого метода на объектах, представленных кластером классов. Из-за природы кластеров классов возвращаемый объект может не всегда соответствовать ожидаемому типу. Если вы вызываете метод, который возвращает кластер классов, точный тип, возвращаемый методом, является лучшим индикатором того, что вы можете сделать с этим объектом. Например, если метод возвращает указатель на объект NSArray, вы не должны использовать этот метод, чтобы увидеть, является ли массив изменчивым, как показано в следующем коде:
Если вы используете такие конструкции в своем коде, вы можете подумать, что можно модифицировать объект, который в действительности не должен изменяться. Это может создать проблемы для другого кода, который ожидает, что объект останется неизменным.
источник
-isKindOfClass:
&-isMemberOfClass:
не следует использовать для идентификации объектов в кластере классов.Если вы хотите проверить определенный класс, вы можете использовать
источник
если вы хотите получить имя класса, просто позвоните:
источник
Вы также можете проверить время выполнения. Поместите одну точку останова в код и внутри (lldb) записи консоли
Как это..
источник