2012-12-10 29 views
2

我想写我自己的方法来检查变量比我用NSLog更容易 - 我希望它是NSLog的包装,所以我需要以某种方式识别传递给我的方法的任何对象的适当的格式说明符。Objective-C是否有一个方法(或C函数)返回给定对象的对象格式说明符?

这将是不错的format_specifier_for像的方法,可以做到以下几点:

format_specifier_for(1) => %d 
format_specifier_for(@1) => %@ 
and so on... 

UPDATE:

除了公认的答案(它回答原来的问题)有是两种可能的解决方法:

  1. From @ Guillaume's ans wer:使用http://vgable.com/blog/2010/08/19/the-most-useful-objective-c-code-ive-ever-written/的LOG_EXPR方法。 How to check if a variable is an object?

我认为理想的解决方案可以从两个选项借:

  • 定义方法时,这里描述使用重载属性。

  • 回答

    3

    不,不能有这样的功能,因为您总是可以对同一数据类型使用多个(理论上每一个)格式说明符。例如,您可以使用%@来打印NSString%p的值以获取内存中的地址。

    +0

    谢谢,您已经确认我的想法! –

    +0

    如果有一种方法可以获得C结构或POD类型的类型,那么可以编写一个宏或函数来评估您所选择的格式说明符。但afaik也是不可能的。 – Minthos

    相关问题