Verwendung von isMemberOfClass; false zurückgeben

Im folgenden Code dachte ich, dass die zweite Bedingung wahr wäre, aber sie stellt sich als falsch heraus. Vermisse ich etwas? Bitte hilf mir zu verstehen.

NSArray *array = [[NSArray alloc] init];
NSLog(@"%@", NSStringFromClass([array class]));

if ([array isMemberOfClass:[NSObject class]]) {

    NSLog(@"Member NSObject"); //Didn't print; 
}

if ([array isMemberOfClass:[NSArray class]]) {

    NSLog(@"Member NSArray"); //Didn't print; I don't understand why?
}

if ([array isKindOfClass:[NSObject class]]) {

    NSLog(@"Kind of NSObject"); //Printed; Expected
}

if ([array isKindOfClass:[NSArray class]]) {

    NSLog(@"Kind of NSArray"); //Printed; Expected
}

Bearbeiten

Ich habe die Unterklasse von NSArray als MyArray erstellt und ihre Instanz mit isMemberOfClass getestet (siehe unten)

if ([myArray isMemberOfClass:[MyArray class]]) {

    NSLog(@"Member MyArray"); //Printed;
}

Ich denke also, dass isMemberOfClass in NSArray nicht möglich ist, wahrscheinlich auch in einigen anderen Framework-Klassen.

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage