Числа от 0 до 12 являются особыми, как я обнаружил, отвечая на другой вопрос здесь . Помните, что это деталь реализации, , а не спецификация языка.
Как правило, числа до (и включая) 12 дают вам ссылку на уже существующий номер NSNumber, что возможно благодаря тому, что они неизменны. Расследование показало, что числа 13 или больше дали отдельный экземпляр.
Так что вы, вероятно, все-таки испортили управление памятью :-) В конце концов, просто то, что числа меньше 13, скорее всего, являются ссылками на уже существующие числа, что спасает ваш бекон в этих случаях. Я предлагаю вам опубликовать больше кода, чтобы мы могли отследить эту конкретную проблему.
А исходя из вашего комментария к другому ответу здесь:
Я добавил строку сохранения в код, и теперь все работает отлично. Понятия не имею почему. Я просто собираюсь катиться с этим. Спасибо!
Я думаю, вы обнаружите, что тот факт, что номера NSN меньше 13 уже имеют счет сохранения 1, прежде чем вы получите свой собственный (увеличение счетчика до 2), является причиной того, что они не вызывают EXC_BAD_ACCESS. Очевидно, ваш код теряет все номеров, которые вы выделяете, но система не освобождает тех, кому меньше 13, так как они все еще используются (сохраните счет 1 или более).