Macs in Media

Objective-C Programmierung Einmaleins – Länge eines Arrays

Bevor man auf ein Array – oder eine Datenstruktur, welche ein Array abbildet – zugreift, sollte man vorher immer (wirklich grundsätzlich immer) dessen Länge überprufen. In den meisten Fällen geht man naiv davon aus, dass der Code schon irgendwie funktionieren wird und dass – gerade in Grenzfällen – immer mindestens ein Objekt im Array sein wird.

So etwas führt allerdings zu einem Absturz, wenn mal kein Objekt im Array sein sollte:

NSArray *anArray = [foo selectedObjects];
RBObject *anObj = [anArray objectAtIndex:0];

Daher muss man vorher überprüfen, ob das Array tatsächlich so lang ist, wie man es erwartet. Das kann man zum Beispiel machen, indem man eine Hilfsvariable einführt:

NSArray *anArray = [foo selectedObjects];
NSUInteger i = 5;

if ([anArray count] <= i)
{
  // Fehlerbehandlung
  return;
}

RBObject *anObj = [anArray objectAtIndex:i];

Somit kommt es selbst bei Seiteneffekten zu keinem Absturz. Natürlich sollte man sich etwas Gescheites für die Fehlerbehandlung ausdenken, gerade wenn es sich um kritischen bzw. relevanten Code handelt.