IPhone, как проверить тип объекта?

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

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

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

Ответ 1

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

Ответ 2

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

Сначала там -class, который вернет класс вашего объекта. Это вернет либо AViewController, либо BViewController.

Тогда существуют два метода: -isKindofClass: и isMemberOfClass:.

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

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

Ответ 3

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

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

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