If I'm trying to find out if an object is a type of a certain class (or any of that class's descendants), it seems that I should use "isKindOf:"
if ([foo isKindOfClass:[bar class]]) {...}
But the compiler gives me a warning "invalid receiver type 'void *'".
This goes away if I cast "foo" to NSObject...or any other class! No matter what class I cast the object to, the code still works. That is, even if I do:
if ([(NSString *)foo isKindOfClass:[bar class]]) {...}
the "isKindOfClass" method still returns TRUE if and only if "foo" is of type "bar".
Am I missing something here? Shouldn't casting "foo" to another type make the logic fail? And why do I need to cast "foo" at all, since the whole point is that I'm trying to figure out what type of object it is?