这很奇怪。下面的if语句失败了。有什么不对的?
NSDate *date = [NSDate date];
if ([date isMemberOfClass: [NSDate class]]) {
// Not executed.
}发布于 2015-09-08 20:20:53
像NSArray、NSDictionary、NSString和NSData这样的类是类集群。这个概念在文档中得到了更好的解释,这意味着您将不会得到该类的直接实例。
由于要处理的“数据”多种多样,类具有内部专门化的子类;当您创建实例时,将确定这些内部子类中的哪个是最佳选项,然后您的对象将是该子类的实例(而不是NSData本身的实例)。
在本例中,如果需要检查,请使用isKindOfClass:,这对于子类也是正确的。
NSDate *date = [NSDate date];
if ([date isKindOfClass: [NSDate class]]) {
/* ... */
}编辑:作为另一个示例,在这些对象中调用NSStringFromClass([obj class]):
NSData * data = [NSData data];
NSData * str_data = [@"string" dataUsingEncoding:NSUTF8StringEncoding];
NSNumber * n_bool = [NSNumber numberWithBool:YES];
NSNumber * n_int = [NSNumber numberWithInt:42];
NSArray * array = [NSArray array];在以下方面的成果:
_NSZeroData
NSConcreteMutableData
__NSCFBoolean
__NSCFNumber
__NSArrayI发布于 2015-09-08 19:46:58
https://stackoverflow.com/questions/32465816
复制相似问题