Question

NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3];

if ([arr isMemberOfClass:[NSMutableArray class]]) {
    NSLog(@"YEP!!");
} else {
    NSLog(@"NO!!");
}

I get always "NO!!" in console. I tried with Array, NSNumber, NSString. All of them don't seem to work. That's strange. As I get it from the docs, this method should return YES if I test agains the class of the object which is subject of the testing. I'm using the Foundation.h, not Core Foundation (if it makes any difference anyways).

Was it helpful?

Solution

You need to use isKindOfClass: or respondsToSelector: as NSArray and similar are class clusters - you actually get subclasses when creating them. See this answer for some interesting bits on this.

OTHER TIPS

When you create an array using [NSMutableArray arrayWithCapacity:], the object you get is actually a member of some concrete subclass of NSMutableArray. NSMutableArray only exists momentarily in the process of creating the concrete instance.

-isMemberOfClass: returns true if the receiver's isa pointer is equal to the given class. -isKindOfClass: returns true if the receiver is a member of the given class or any of its subclasses.

did you try isKindOfClass instead of isMemberOfClass?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top