NSArray конструкция вызывает сбой приложения - PullRequest
0 голосов
/ 11 февраля 2011

Мое приложение упало, это правильно построено?

NSArray *array = [mapView.annotations  filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(self isKindOfClass: %@)", [MapLocation class]]];
if (array != nil)
{
    annotation = [array objectAtIndex:0];
}

Я вижу, что массив не ноль, но у него 0 объектов (при отладке). Правильно построен?

1 Ответ

2 голосов
/ 11 февраля 2011

NSArray вызовет исключение, если вы получите доступ к чему-либо вне его границ.Если массив пуст, доступ к элементу с индексом 0 выходит за его пределы.Вы можете проверить, содержит ли массив элементы, вызвав [array count] например:

NSArray *array = [mapView.annotations  filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(self isKindOfClass: %@)", [MapLocation class]]];
if([array count] > 0) // No need to check if the array is != NULL, the runtime won't send messages to NULL
{
    annotation = [array objectAtIndex:0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...