-2

NSDictionary次のコードがではなく を返すのはなぜ__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 に答える