2013-04-07 61 views
-2

爲什麼下面的代碼不會返回NSDictionary,而是返回__NSDictionaryI檢索NSDictionary對象的類

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

我的選項是檢查對象是否是NSDictionary的實例?正如我發現的那樣,我不能撥打[__NSDictionaryI class],因爲它不可見。

[dict classForCoder]返回NSDictionary似乎是一個很好的解決方案,但調用某些自定義類的對象時不會失敗嗎?什麼是最普遍的方法來檢查對象是否是給定類的實例?

回答

2

根據報頭,可以發現here __NSDictionaryI是的NSDictionary的後代,所以我想你可以使用這個檢查:

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

,它應該具有的NSDictionary和__NSDictionaryI工作實例。

+0

並與__NSDictionaryM這是一個NSMutableDictionary – HAS 2013-04-08 05:56:51