fetchBatchSize влияет только на то, сколько объектов выбирается одновременно. Это не будет ограничивать количество объектов в памяти одновременно, поэтому все еще возможно исчерпать память. Можно ограничить общее количество одновременных объектов комбинацией batchSize, fetchLimit и offset, но это требует удаления кэша или хранения отдельных кэшей на «страницу», что мне кажется неидеальным.
Еще один более хакерский способ обойти это - воссоздать NSFetchedResultsController, результаты от старого контроллера будут по возможности ошибочными, и вы можете начать с чистого листа. Действительно сырой, но он избегает удаления кэша.