В приведенном ниже коде я думал, что второе условие будет истинным, но оно окажется ложным. Я что-то упускаю? Пожалуйста, помогите мне понять.использование isMemberOfClass; return false
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
}
Редактировать
Я создал вспомогательный класс NSArray в MyArray и испытания его экземпляра с помощью isMemberOfClass ниже
if ([myArray isMemberOfClass:[MyArray class]]) {
NSLog(@"Member MyArray"); //Printed;
}
Итак, я думаю isMemberOfClass не возможно на NSArray, вероятно, на некоторых другие рамочные классы.
Спасибо.
Как проверить NSArray для определенных не детей NSArray? – Saran
Я не уверен, что понял вопрос. Вы спрашиваете, как найти объекты, чей класс * не является потомком 'NSArray'? Если это так, вы просто используете '! [Object isKindOfClass: [NSArray class]]'. –
Я имею в виду, как точно тестировать конкретный класс, так как isKindOfClass скажет «Да», даже если он найдет его потомком. Я под впечатлением isMemberOfClass точно это сделает. – Saran