-2

为什么下面的代码返回的不是 aNSDictionary而是 a __NSDictionaryI

NSDictionary* dict = [NSDictionary dictionary];
Class c = [dict class];
NSLog(@"%@", c);

我有哪些选项可以检查对象是否是 的实例NSDictionary?正如我发现的那样,我无法打电话[__NSDictionaryI class],因为它不可见。

[dict classForCoder]返回NSDictionary并且似乎是一个很好的解决方案,但是在调用某个自定义类的对象时它不会失败吗?检查对象是否是给定类的实例的最通用方法是什么?

4

2 回答 2

2

根据可以在此处找到的标头__NSDictionaryI 是 NSDictionary 的后代,所以我想您可以使用此检查:

NSDictionary* dict = [NSDictionary dictionary];
if ([dict isKindOfClass:[NSDictionary class]])
{
//your code here
}

它应该适用于 NSDictionary 和 __NSDictionaryI 实例。

于 2013-04-07T10:43:03.457 回答
1

如何检查 NSDictionary 中的类

if([object isKindOfClass:[AObjectClass class])
{
    NSLog(@"object is of type AObjectClass");
}
于 2013-04-07T10:34:26.520 回答