Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Neues für Arrays

Ebenfalls verkürzt hat sich im modernen Objective-C die Deklaration und Initialisierung von NSArray oder NSMutableArray-Objekten. Benutzte man bisher oft die Anweisung initWithObjects, gibt es jetzt auch hier einen Convenience Allocator, ein @ mit einem Paar eckigen Klammern. Der Befehl nil, mit dem in der Vergangenheit das Ende eine Arrays kenntlich gemacht wurde, ist auch nicht länger erforderlich.
// Alte Schreibweise
NSArray *oldArray
= [[NSArray alloc] initWithObjects:@"Hallo Welt",@"Hello Array", nil];

// Neue Schreibweise
NSArray *newArray = @[@"Hallo Welt", @"Hallo Array"];
Besonders viel Schreibarbeit lässt sich einsparen, soll ein Array aus NSNumber-Objekten erstellt werden.
// Alte Schreibweise
NSArray *oldArray = [[NSArray alloc] initWithObjects:
                    [NSNumber numberWithDouble:3.145],
                    [NSNumber numberWithDouble:9.876],
                    [NSNumber numberWithDouble:1.234],
                    nil];

// Neue Schreibweise
NSArray *newArray = @[@3.145,@9876,@1.234];
Leider lassen sich mit der neuen Schreibweise nur unveränderliche, inmutable, Auflistungen erzeugen. Möchte man statt eines NSArray ein NSMutableArray anlegen, um später weitere Objekte hinzuzufügen, muss von der gesamte Liste eine Kopie erstellt werden.
NSMutableArray *newArray = [@[@3.145,@9876,@1.234] mutableCopy];
Der Zugriff auf einzelnen Objekte des Array wurde ebenfalls vereinfacht. Benötigte man in der Vergangenheit noch Anweisungen wie objectAtIndex, kann jetzt, wie in vielen anderen Programmiersprachen auch, ein Indexposition in einer eckigen Klammer angegeben werden.
// Alte Schreibweise
NSNumber *num1 = [newArray objectAtIndex:1];

// Neue Schreibweise
NSNumber *num2 = newArray[1];