2012-01-25 17 views

Odpowiedz

29
  • printf() to funkcja biblioteki standardowej C, przyjmując łańcuch C stałą (const char *) jako argument format. printf() pisze na stdout.

  • NSLog() jest funkcją Foundation, przyjmując stałą NSString jako format i ma rozszerzony zestaw specyfikatora formatu (np printf() does't obiekty druku określone przez %@, NSLog() robi). NSLog() drukuje również nazwę procesu i datę, zanim wydrukuje rzeczywisty format i zapisuje do sdterr.

W zasadzie można powiedzieć, że NSLog() jest rozszerzoną printf() funkcja Style dla Objective-C (dokładniej, kakao i Cocoa Touch) oraz konkretnych celów.

8

Z punktu widzenia programistów, największą różnicą jest to, że NSLog obsługuje obiekty typu Objective-C w formacie% @. NSLog zapisuje również na stderr, podczas gdy printf zapisuje na standardowe wyjście.

3

widzę dwa główne różnice między NSLog i printf:

  1. NSLog obsługuje NSString obiektów poprzez rozszerzenie %@;

  2. ponadto NSLog automatycznie dodaje danych czasowych i sposób (np 2012-01-25 17: 52: 10,479 procesu [906: 707])

+1

Dokładniej: 'NSLog obsługuje obiekty poprzez rozszerzenie% @, niejawnie wywołując opis tego obiektu - (NSString *); method' –

+0

Trzecią największą różnicą jest to, że NSLog wysyła wyjście do stderr, gdzie jak printf wysyła na standardowe wyjście. – Munim

20

NSLog jest jak printf, lecz nie nieco więcej:

  • Znacznik czasu jest dodawany do danych wyjściowych.
  • Dane wyjściowe są wysyłane do konsoli Xcode lub do dowolnego stderr zdefiniowanego jako.
  • Przyjmuje wszystkie specyfikatory printf, ale akceptuje również operator @ dla obiektów wyświetlających ciąg znaków dostarczony przez metodę obiektu description. (description jest częścią NSObject, więc wszystkie obiekty mogą go przesłonić, aby zwrócić ciąg znaków opisujący obiekt).
  • Dane wyjściowe są również wysyłane do dziennika systemu Apple (ASL), który jest wersją syslogd firmy Apple. Dane te mogą być odczytane przez inne aplikacje korzystające z interfejsu API C lub przez użytkownika systemu OS X za pomocą aplikacji "Konsola".
+0

+1: Ładne i zwięzłe. – ArtOfWarfare

Powiązane problemy