【发布时间】:2016-09-13 13:26:45
【问题描述】:
我有一些代码将接收未知类型的对象。它可以是 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 并且两者都是类簇,所以我很难将它们整理出来。
所以:
[value isKindOfClass:[NSValue class]] ... 将 NSNumbers 视为 NSValues。
[value isMemberOfClass:[NSValue class]] ... 无法识别 NSValue,因为实例是具体的子类型。
有人知道怎么做吗?
【问题讨论】: