Objective-C 判断参数是否为对象
在 Objective-c 中我有这个函数原型: -(NSString*)formatSQL:(NSString*)sql, ... 我可以向该函数传递任何类型的参数:NSString、NSNumber、integer、float 如何在函数中确定参数是对象(NSString..)还是基元(整数...)? 谢谢 布洛赫海盗
in Objective-c I have this function prototype:
-(NSString*)formatSQL:(NSString*) sql, ...
I may pass to this function any type of parameters: NSString, NSNumber, integer, float
How can I determine in the function if a parameter is an object (NSString..) or a primitive (integer...)?
thanks
BrochPirate
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您要拥有接受多种类型的参数,则只能使用 Obj-C 对象安全地实现,这意味着使用
id
作为类型。您无法安全地将id
与float
、integer
等混合。如果您包装了所有
float
和NSNumber
中的int
,您可以使用如下方法:使用
isKindOfClass:
有一些注意事项,但这应该有用作为一个好的起点。If you're going to have a parameter that accepts multiple types, you can only safely do it by using Obj-C objects, which means using
id
as the type. You can't safely inter-mingleid
withfloat
,integer
etc.If you wrapped up all
float
s andint
s inNSNumber
s, you could have a method like so:There are a few caveats to using
isKindOfClass:
, but this should serve as a good starting point.