Разница между операторами NSLog и Printf для ObjectiveC

Я хочу знать о разнице между NSLog и Printf оператором в Objective-C (для прикладных целей ...!)

Почему все разработчики используют NSLog вместо Printf ?

Оба выглядят одинаково, но в чем разница во внутренней работе?

В какой момент их можно отличить?

21
задан S.L. Barth - Reinstate Monica 16 August 2012 в 12:45
поделиться

3 ответа

NSLog похож на printf, но он делает немного больше:

  • Временная метка добавляется к выходу.
  • Вывод отправляется на консоль Xcode, или как там определен stderr.
  • Он принимает все спецификаторы printf, но также принимает оператор @ для объектов, который отображает строку, предоставленную методом объекта description. (description является частью NSObject, поэтому все объекты могут переопределить его, чтобы вернуть строку, описывающую объект).
  • Вывод также отправляется в системный журнал Apple (ASL), который является версией Apple syslogd. Эти данные могут быть прочитаны другими приложениями, использующими API C, или пользователем OS X, использующим приложение «Консоль».
26
ответ дан 29 November 2019 в 06:25
поделиться

С точки зрения разработчика, самое большое отличие состоит в том, что NSLog поддерживает типы объектов Objective-C через формат% @. NSLog также пишет в stderr, в то время как printf пишет в stdout.

9
ответ дан 29 November 2019 в 06:25
поделиться

Я вижу два основных различия между NSLog и printf:

  1. NSLog поддерживает NSString объекты через расширение %@;

  2. Более того, NSLog автоматически добавляет время и данные процесса (например, 2012-01-25 17: 52: 10.479 процесс [906: 707])

3
ответ дан 29 November 2019 в 06:25
поделиться