为什么以下代码不返回NSDictionary
,而是返回__NSDictionaryI
?
NSDictionary* dict = [NSDictionary dictionary];
Class c = [dict class];
NSLog(@"%@", c);
我可以选择检查对象是否为NSDictionary
的实例?正如我发现的那样,我无法致电[__NSDictionaryI class]
,因为它不可见。
[dict classForCoder]
返回NSDictionary
并且似乎是一个很好的解决方案,但是在调用某个自定义类的对象时它不会失败吗?检查对象是否是给定类的实例的最通用方法是什么?
答案 0 :(得分:2)
根据可以找到的标题here __NSDictionaryI是NSDictionary的后代,所以我想你可以使用这个检查:
NSDictionary* dict = [NSDictionary dictionary];
if ([dict isKindOfClass:[NSDictionary class]])
{
//your code here
}
它应该适用于NSDictionary和__NSDictionaryI实例。
答案 1 :(得分:1)
How to check a class in a NSDictionary
if([object isKindOfClass:[AObjectClass class])
{
NSLog(@"object is of type AObjectClass");
}