我想编写一个像 NSLog() 这样的函数或指令,它接受任何类型的变量、原语和对象。在那个功能中,我想区分这些。
我知道它对对象的工作原理:
- (void)test:(id)object {
if ([object isKindOfClass:[NSString class]])
...
但是我如何区分对象与结构甚至整数或浮点数。就像是:
"isKindOfStruct:CGRect" or "isInt"
例如?
这可能吗?我想既然您可以将所有内容发送到 NSLog(@"...", objects, ints, structs) 它一定是可能的吗?
谢谢你的帮助!
编辑
我的最终目标是实现某种多态性。
我希望能够调用我的函数:
MY_FUNCTION(int)
MY_FUNCTION(CGRect)
MY_FUNCTION(NSString *)
...
or [self MYFUNCTION:int]...
并在 MY_FUNCTION
-(void)MYFUNCTION:(???)value {
if ([value isKindOf:int])
...
else if ([value isKindOf:CGRect])
...
else if ([value isKindOfClass:[NSString class]])
...
}
我知道 isKindOf 不存在,你甚至不能对原语执行这样的方法。我也不确定“???” 函数头中“值”的通用类型。
那可能吗?