1
例如,如果我有一个函数排序()像这样:如何知道Iphone上Objective C中变量的类型?
+ (void) sort: (id) a { if(typeof(a) == 'NSArray') { ... } }
那么,有没有目标C为iPhone任何可以替代的typeof()的走,这样我可以检测事先什么样的变量我在处理?
例如,如果我有一个函数排序()像这样:如何知道Iphone上Objective C中变量的类型?
+ (void) sort: (id) a { if(typeof(a) == 'NSArray') { ... } }
那么,有没有目标C为iPhone任何可以替代的typeof()的走,这样我可以检测事先什么样的变量我在处理?
[a isKindOfClass:[NSArray class]]
想到泉水。
我也想指出,虽然在你的情况下,它更有意义,只需输入方法的参数,而不是采取ID和检查它的类型,即
+ (void)sort:(NSArray *)a
的NSObject
协议具有比较方法是你会感兴趣的。
感谢您的提示。我打算传递各种对象,例如NSArray,NSMutableArray,NSDictionary,NSMutableDictionary等,并根据类型进行操作。 – kumar 2010-09-29 11:12:23
这是有道理的,但要警告它往往是一个弱设计的症状。 – 2010-09-29 16:29:25