2

我想编写自己的方法来比使用 NSLog 更容易地检查变量 - 我希望它成为 NSLog 的包装器,因此我需要以某种方式识别传递给我的方法的任何对象的正确格式说明符。

最好有一个像format_specifier_for这样的方法可以执行以下操作:

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

更新:

除了接受的答案(它确实回答了原始问题)之外,还有两种可能的方法来解决这个问题:

  1. 来自@Guillaume 的回答:使用来自http://vgable.com/blog/2010/08/19/the-most-useful-objective-c-code-ive-ever-written/的 LOG_EXPR 方法。
  2. 在定义方法时使用可重载属性,如下所述:如何检查变量是否为对象?

我认为理想的解决方案可以借鉴这两种选择。

4

2 回答 2

3

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

于 2012-12-10T15:06:01.320 回答
1

看看那个:我写过的最有用的 Objective-C 代码。作者使用 Ctypeof运算符和 Objective-C@encode指令来做你想做的事情......

于 2012-12-10T17:05:34.680 回答