Это признак того, что область памяти, в которой ваш код ожидает вашего массива, имеет либо:
- Был освобожден, и в том же месте была выделена другая переменная
- забит плохим кодом
Моя ставка будет на первую. Вам нужно внимательно посмотреть, где вы размещаете массив, и убедиться, что вы не позволяете его счетчику достичь нуля.
Помните, что если вы выделяете массив с помощью удобного метода (в основном тот, который начинается с array
), а не сохраняете его или не назначаете его с помощью точечной нотации (например, self.myArray = [NSArray arrayWith...]
) и свойства, помеченного retain
, он будет освобожден, возможно, как только метод, в котором вы его разместили, вернется.
TL; DR - проверить, где вы назначаете массив, и убедиться, что вы используете что-то вроде этого:
self.startingPlayers = [NSArray arrayWithObjects:@"first", @"second", nil];
и не так:
startingPlayers = [NSArray arrayWithObjects:@"first", @"second", nil];
Этот человек укусил меня бесчисленное количество раз, в том числе в середине презентации сразу после того, как я упомянул, что не буду этого делать.