2

在 Objective-c 中我有这个函数原型:-(NSString*)formatSQL:(NSString*) sql, ...我可以向这个函数传递任何类型的参数:NSString、NSNumber、整数、浮点我如何确定如果参数是对象(NSString..)或原始(整数...),则函数?感谢 BrochPirate

4

1 回答 1

5

如果您将有一个接受多种类型的参数,您只能通过使用 Obj-C 对象来安全地做到这一点,这意味着使用id作为类型。您不能安全地idfloat等混合integer

如果你把所有float的 s 和ints 包裹在NSNumbers 中,你可以有这样的方法:

- (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:,但这应该是一个很好的起点。

于 2010-04-29T06:48:01.000 回答