У меня есть код, в котором я буду получать объект неизвестного типа. Это может быть NSString
, NSNumber
, скаляр, обернутый в NSValue
, или какой-то другой класс:
-(void) doSomethingWith:(id) value {
if ( <test-for-NSValue> ) {
// Do something with a NSValue
} else {
// Do something else
}
}
Мне нужно определить, где внутри NSValue находится скалярный тип.
Проблема состоит в том, чтобы отличить скаляр, обернутый в NSValue, от NSNumber. Поскольку NSNumber наследуется от NSValue и оба являются кластерами классов, у меня возникают проблемы с их сортировкой.
So:
[value isKindOfClass:[NSValue class]]
... видит NSNumbers как NSValues.
[value isMemberOfClass:[NSValue class]]
... не распознает NSValues, поскольку экземпляры являются конкретными подтипами.
Кто-нибудь знает, как это сделать?