Подтвердить что ты не робот

Разница между NSLog и выводом Printf для ObjectiveC

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

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

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

В какой момент они могут быть дифференцированы?

4b9b3361

Ответ 1

  • printf() является стандартной библиотечной функцией C, принимающей строчную константу C (const char *) в качестве аргумента формата. printf() записывает в stdout.

  • NSLog() - это функция Foundation, принимающая постоянный формат NSString в качестве формата и имеющий спецификатор расширенного формата (например, printf() не печатает объекты, указанные %@, NSLog() делает). NSLog() также печатает имя процесса и дату до того, как он печатает фактический формат и записывает в sdterr.

В принципе, мы можем сказать, что NSLog() является расширенным printf() Функция стиля для Objective-C (точнее, Cocoa и Cocoa Touch) и конкретные цели.

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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