iPhone Как проверить тип объекта?


Я хочу проверить тип объекта. Как я могу это сделать?

сценарий заключается в том, что я получаю объект. Если этот объект имеет тип A, то выполните некоторые операции. Если он имеет тип B, то выполните некоторые операции. В настоящее время тип объекта-C, который является родителем A и B.

у меня есть два класса AViewController иBViewController. Объект, который я получаю в UIViewController. Теперь, как проверить, является ли объект AViewController или BViewController?

3 62

3 ответа:

if([some_object isKindOfClass:[A_Class_Name class]])
{
    // do somthing
}

есть некоторые методы на NSObject, которые позволяют проверять классы.

первый -class который вернет класс вашего объекта. Это будет возвращать либо AViewController или BViewController.

тогда есть два метода, -isKindofClass: и isMemberOfClass:.

-isKindOfClass: будет сравнивать приемник с классом, переданным в качестве аргумента, и возвращать true или false на основе того, является ли класс тем же типом или подклассом данного класс.

-isMemberOfClass: будет сравнивать приемник с классом, переданным в качестве аргумента, и возвращать true или false на основе того, является ли класс строго тем же классом, что и данный класс.

более распространенным шаблоном в Objective-C является проверка того, отвечает ли объект на интересующие вас методы. Пример:

if ([object respondsToSelector:@selector(length)]) {
    // Do something
}

if ([object conformsToProtocol:@protocol(NSObject)]) {
    // Do something
}