2012-12-10 32 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

    相關問題