Основной поток имеет стек 1 МБ, вторичные стеки имеют размер стека по умолчанию 512 КБ.
Вы получите это сообщение об ошибке, если у вас недостаточно места в стеке, и поскольку оно работает в основном потоке, а не во втором, я бы сказал, что это именно ваша проблема.
Мой первый совет - по возможности уменьшить рекурсию, поскольку 512 КБ достаточно щедро для начала, а увеличение размера, вероятно, только отложит ваши проблемы. Потенциально до тех пор, пока приложение не окажется в руках конечных пользователей, дико рухнувших за 1-звездочные обзоры.
Если вам нужен больший стек, то вы должны сами создать, настроить и запустить стек. Как это:
NSThread* t = [[NSThread alloc] initWithTarget:self
selector:@selector(someSelector:)
object:anArgument];
[t setStackSize:1024*1024];
[t start];
Минимальный размер стека в 4K, а размер должен быть с шагом 4K.