В Objective-C, что такое эквивалент ключевого слова Java "instanceof"?
Я хотел бы проверить, является ли объект (например,someObject) присваиваем (монолитно-состоянии) к переменной другого типа (например,SpecifiedType). На Java я могу написать:
someObject instanceof SpecifiedType
связанный с этим вопрос заключается в том, является ли тип времени выполнения объекта равным другому типу. На Java я могу написать:
someObject.getClass().equals(SpecifiedType.class)
как это можно сделать в Objective-C?
3 ответа:
попробовать
[myObject class]для возврата класса объекта.вы можете сделать точные сравнения с:
if ([myObject class] == [MyClass class])но не с помощью непосредственно
MyClassидентификатор.аналогично, вы можете найти, если объект относится к подклассу вашего класса с:
if ([myObject isKindOfClass:[AnObject class]])как предложил Джон Скит и Зул.
С Википедия:
в Objective-C, например, как универсальный
ObjectиNSObject(in Какао / OpenStep) обеспечивают методisMemberOfClass:возвращаетtrueЕсли аргументом метода является экземпляр указанного класса. Этот методisKindOfClass:аналогично возвращает true, если аргумент наследует из указанного класса.
isKindOfClass:будет ближе кinstanceof, судя по звукам.
посмотреть isKindOfClass: метод NSObject документация. (Обычное слово предупреждения для такого вопроса заключается в том, что проверка класса объектов часто является признаком того, что что-то не так.)