2010-09-29 68 views
1

例如,如果我有一个函数排序()像这样:如何知道Iphone上Objective C中变量的类型?

 
+ (void) sort: (id) a { 
if(typeof(a) == 'NSArray') 
    { ... } 
} 

那么,有没有目标C为iPhone任何可以替代的typeof()的走,这样我可以检测事先什么样的变量我在处理?

回答

3
[a isKindOfClass:[NSArray class]] 

想到泉水。

我也想指出,虽然在你的情况下,它更有意义,只需输入方法的参数,而不是采取ID和检查它的类型,即

+ (void)sort:(NSArray *)a 
+0

感谢您的提示。我打算传递各种对象,例如NSArray,NSMutableArray,NSDictionary,NSMutableDictionary等,并根据类型进行操作。 – kumar 2010-09-29 11:12:23

+0

这是有道理的,但要警告它往往是一个弱设计的症状。 – 2010-09-29 16:29:25

1

NSObject协议具有比较方法是你会感兴趣的。