iphone objective-c printf nslog

iphone - Diferencia entre NSLog y Printf para ObjectiveC



objective-c (4)

Desde el punto de vista del desarrollador, la mayor diferencia es que NSLog admite tipos de objetos Objective-C a través del formato% @. NSLog también escribe en stderr, mientras que printf escribe en stdout.

Quiero saber acerca de la diferencia entre el NSLog y la declaración Printf en Objective-C (para el propósito de la aplicación ...!)

¿Por qué todos los desarrolladores utilizan NSLog lugar de Printf ?

Ambos parecen similares, pero ¿cuál es la diferencia en el trabajo interno?

¿En qué punto se pueden diferenciar?


NSLog es como un printf, pero hace un poco más:

  • Se agrega una marca de tiempo a la salida.
  • La salida se envía a la consola Xcode, o como se define stderr.
  • Acepta todos los especificadores de printf, pero también acepta el operador @ para objetos que muestra la cadena proporcionada por el método de description del objeto. (La description es parte de NSObject, por lo que todos los objetos pueden anularla para devolver una cadena que describa el objeto).
  • La salida también se envía al registro del sistema de Apple (ASL), que es la versión de syslogd de Apple. Esta información puede ser leída por otras aplicaciones usando una API de C, o por un usuario de OS X usando la aplicación "Consola".

Veo dos diferencias principales entre NSLog y printf :

  1. NSLog admite objetos NSString través de la extensión %@ ;

  2. además, NSLog agrega automáticamente datos de tiempo y proceso (por ejemplo, 2012-01-25 17: 52: 10.479 proceso [906: 707])


  • printf() es una función de biblioteca estándar de C, que acepta una constante de cadena C ( const char * ) como su argumento de formato. printf() escribe a la salida estándar.

  • NSLog() es una función básica, que acepta un formato NSString constante y tiene un conjunto de especificadores de formato extendido (por ejemplo, printf() imprime los objetos especificados por %@ , NSLog() sí). NSLog() también imprime el nombre y la fecha del proceso antes de imprimir el formato real y escribe en sdterr.

Básicamente, podemos decir que NSLog() es una printf() estilo printf() extendida para Objective-C (más precisamente, Cocoa y Cocoa Touch) y para propósitos específicos.