Я хотел бы проверить, является ли объект (например someObject
) назначаемым (приведенным) к переменной другого типа (например SpecifiedType
). На Java я могу написать:
someObject instanceof SpecifiedType
С этим связан вопрос о том, равен ли тип времени выполнения объекта другому типу. На Java я могу написать:
someObject.getClass().equals(SpecifiedType.class)
Как это можно сделать в Objective-C?
Ответы:
Попробуйте
[myObject class]
вернуть класс объекта.Вы можете сделать точные сравнения с:
но не с помощью прямого
MyClass
идентификатора.Точно так же вы можете узнать, принадлежит ли объект подклассу вашего класса с помощью:
как предложено Джоном Скитом и Зулом.
источник
if ([myObject isMemberOfClass:[MyClass class]])
Из Википедии :
isKindOfClass:
было бы ближе всегоinstanceof
, по звукам этого.источник
См isKindOfClass: метод в NSObject документации. (Обычное предупреждающее слово для такого вопроса состоит в том, что проверка класса объекта часто является признаком неправильной работы.)
источник
+ (BOOL)conformsToProtocol:(Protocol *)aProtocol
.