użycie isMemberOfClass; powrót fałszywy
W poniższym kodzie myślałem, że drugi warunek będzie prawdziwy, ale okazuje się fałszywy. Czy czegoś mi brakuje? Pomóż mi zrozumieć.
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
}
Edytować
Stworzyłem podklasę NSArray jako MyArray i przetestowałem jej instancję używając isMemberOfClass jak poniżej
if ([myArray isMemberOfClass:[MyArray class]]) {
NSLog(@"Member MyArray"); //Printed;
}
Tak więc, przypuszczam, że nie jest możliwe użycie klasy MemberOfClass w NSArray, prawdopodobnie w niektórych innych klasach.
Dzięki.