Если я пытаюсь выяснить, является ли объект типом определенного класса (или любого из потомков этого класса), мне кажется, что я должен использовать «isKindOf:»
if ([foo isKindOfClass:[bar class]]) {...}
Но компилятор выдает мне предупреждение "недопустимый тип получателя" void * "".
Это исчезнет, если я приведу "foo" к NSObject ... или любому другому классу! Независимо от того, к какому классу я приведу объект, код все равно работает. То есть, даже если я делаю:
if ([(NSString *)foo isKindOfClass:[bar class]]) {...}
метод isKindOfClass по-прежнему возвращает TRUE, если и только если «foo» имеет тип «bar».
Я что-то здесь упускаю? Не должно ли приведение «foo» к другому типу сделать логику неудачной? И зачем мне вообще разыгрывать "foo", поскольку все дело в том, что я пытаюсь выяснить, какой это тип объекта?