Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
NSLog

Mit der Projektart Foundation Tool haben Sie auch schon eine der wichtigsten und nützlichsten Methoden für einen Entwickler unter OS X kennen gelernt: NSLog.

NSLog tut nicht anderes als einen Text in das Konsolenfenster zu schreiben. Wie Sie in der letzten Lektion erfahren haben, ist dies das Ausgabefenster für Foundation Tool Programme, aber auch in einer Cocoa-Anwendung kann NSLog sehr nützlich sein. Sie können NSLog und das Konsolenfenster nämlich auch in diesen Projekten jederzeit benutzen, solange Sie in Xcode arbeiten, um für Sie wichtige Informationen auszugeben. NSLog eignet sich hervorragend zur Fehlersuche oder um programminterne Abläufe genauer zu untersuchen. In den folgenden Lektionen werden Sie immer wieder NSLog benutzen, um auch ihre eigenen Programme besser zu verstehen.

Sehr schnell wird sich NSLog zu einem vielseitigen und unverzichtbaren Helfer entwickeln.

Um die Anweisungen dieser Lektion auch zu testen ist es praktisch, ein kleines Testprogramm zu schreiben, mit dem Sie ihren Code auch tatsächlich ausführen können. Sie wissen inzwischen, dass ein neu erstelltes Foundation Tool Projekt automatisch mit einer NSLog Anweisung in der main-Methode erstellt wird und in Xcode so aussieht:
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    NSLog(
@"Hello, World!");
    [pool drain];

    return
0;
}
Die Anweisungen NSAutoreleasePool und pool drain dienen der Speicherverwaltung und können im Augenblick ignoriert werden. Die Programmierung findet zwischen diesen beiden Anweisungen statt, dort, wo passenderweise schon der Kommentar „insert code here“ steht.

Versuchen Sie mal folgende Anweisung:
NSLog(@"Hallo");
Diese Anweisung wird den Text Hallo auf dem Konsolenfenster ausgeben. Das @ ist übrigens extrem wichtig. Damit wird bestimmt, dass es es sich um eine Objective-C Zeichenkette vom Typ NSString handelt und nicht um einen String der Sprache C, welcher auch in Objective-C benutzt werden kann. In der Regel ist aber NSString die richtige Wahl, ausser man möchte vorhandenen C-Code weiterhin benutzen.

Da NSLog immer einen Parameter vom Typ NSString erwartet, bedeutet das aber auch, dass man nicht ohne weiteres Zahlen ausgeben kann. Die Anweisung
NSLog (1234);
wird nicht funktionieren. Schreiben sie stattdessen
NSLog (@"%d",1234);
Das Symbol %d ist einer der so genannten „format specifiers“ und von diesen gibt es eine ganze Reihe ,wie Sie in der Tabelle am Ende dieses Kapitels ersehen können. Natürlich funktionieren format specifier auch in Verbindung mit Variablen, wie zum Beispiel einem float-Wert.
float fValue = 123.986;
NSLog (
@"%f",fValue);
Sie können aber auch Umwandlungen machen, wie zum Beispiel die hexadezimale Darstellung einer Ganzzahl.
int iValue = 255;
NSLog (
@"%0x",iValue);
Ebenso funktioniert es natürlich mit NSString Variablen.
NSString *myString = @"Hello World";
NSLog (myString);
Gruppieren lassen sich solche Ausgaben auch. Für jeden Format Specifier wird mit einem Komma getrennt ein Wert oder eine Variable angehängt.
NSString *myString = @"Hello World";
float fValue = 1234.9876;
NSLog (
@"Text :%@ Wert:%f",myString,fValue);
Ebenso funktioniert es mit zwei NSString:
NSString *myName = @"Meier";
NSString *myFirstName =
@"Max";
NSLog (
@"Vorname :%@ Name :%@",myFirstName,myName);
stacks_image_8594EA5B-91E2-481D-AD29-8C59F966E6E6
Das soll ein kleiner Ausblick reichen. Die Möglichkeiten sind sehr vielfältig und mehr über NSLog werden Sie immer wieder zwischendurch im Laufe der folgenden Lektionen erfahren.

Die wichtigsten Format Specifier:
    %@
    %d, %i
    %u
    %f
    %x
    %o
    %p
    %c
    %C
Object
signed int
unsigned int
float/double
hexadecimal int
octal int
pointer
character
unichat