objective-c确定参数是否为对象

时间:2010-04-29 05:58:33

标签: objective-c object parameters primitive

Objective-c中的

我有这个函数原型: - (NSString *)formatSQL:(NSString *)sql,... 我可以传递给这个函数任何类型的参数:NSString,NSNumber,integer,float 如何在函数中确定参数是对象(NSString ..)还是基元(整数...)? 谢谢 BrochPirate

1 个答案:

答案 0 :(得分:5)

如果您要使用接受多种类型的参数,则只能使用Obj-C对象安全地执行此操作,这意味着使用id作为类型。您无法安全地将idfloatinteger等混合在一起。

如果你将所有floatint包裹在NSNumber中,你可以采用这样的方法:

- (NSString *)formatSQL:(id)obj
{
    if ([obj isKindOfClass:[NSString class]]) {
        // Format as a string
    }
    else if ([obj isKindOfClass:[NSNumber class]]) {
        // Further processing will be required to differentiate between ints and floats
    }
}

使用isKindOfClass:时有一些注意事项,但这应该是一个很好的起点。