Имеет ли Objective-C метод (или C-функцию), возвращающий спецификатор формата объекта для данного объекта?

Я хочу написать свой собственный метод, чтобы упростить проверку переменных, чем у меня с NSLog. Я хочу, чтобы это была оболочка вокруг NSLog, поэтому мне нужно как-то распознать правильный спецификатор формата для любого объекта, переданного моему методу.

Было бы неплохо иметь такой метод, как format_specifier_for, который мог бы сделать следующее:

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

ОБНОВИТЬ:

Помимо принятого ответа (он отвечает на исходный вопрос) есть два возможных подхода к проблеме:

  1. Из ответа Гийома: используйте метод LOG_EXPR от http://vgable.com/blog/2010/08/19/the-most-useful-objective-c-code-ive-ever-written/ .
  2. Использовать перегружаемый атрибут при определении методов, описанных здесь: Как проверить, является ли переменная объектом?

Я думаю, что идеальное решение могло бы заимствовать оба варианта.

Нет, такая функция не может быть такой, поскольку вы всегда можете использовать несколько спецификаторов формата (для каждого из них) для одного и того же типа данных. Например, вы можете использовать %@ для печати значения NSString или %p для получения адреса в памяти.

Посмотрите на это: Самый полезный код Objective-C, который я когда-либо писал . Автор использует оператор C typeof и директиву Objective-C @encode чтобы сделать что-то вроде того, что вы хотите …

  • Нет @interface для CalculatorViewController
  • NSLog on Objects (например, UIButton, UIView, NSString, NSDictionary) с% @ для описания
  • Получить символ валюты из кодов валют в Objective-C
  • ObjC: Напишите на .plist, оптимизированный способ?
  • Как добавить пользовательский UIView в UINavigationBar только в одном UIViewController
  • Получение порядка переупорядоченных UITableViewCells
  • Как визуализировать изображения без блокировки пользовательского интерфейса?
  • Как циклически перемещаться по массиву CGPoints
  • didDeselectRowAtIndexPath не вызывается, когда флажок установлен aleady
  • Coreplot scaletofitplotissue
  • Переключение переключателя контроллера Push View не включает панель навигации
  • Давайте будем гением компьютера.