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.