Проект Cocos2D с большим количеством сцен не освобождает память должным образом

У меня большая проблема, и я не очень хорошо понимаю, почему она возникает. Дело обстоит так:

  • Есть большой проект в Cocos2D с 10 сценами. Каждая сцена - это страница книги с огромными спрайтами. Используется реализация Kobold2D 1.0.2.
  • Каждая страница имеет общие объекты в классе синглтон, чтобы поместить общее меню через LayerColor.
  • Спрайты - это TexturePacker в PVR.CCZ RGBA4444 и в памяти iPad занимают около 16-20 Мб каждый загруженный спрайт-лист.
  • Я использую CCTransitionTurnPage для replaceScene для одной сцены к следующей.
  • В методе init каждой страницы (класса) загружаю текстуру и FrameFile.
  • В методе onExit каждой страницы (класса) выгружаем текстуры и FrameFile. Я использовал dumpCachedTextureInfo и сказал, что текстуры прекрасно загружаются и выгружаются из памяти.
  • Конечно, я удаляю из дочерних объектов все объекты. Все мои спрайты являются общими переменными, объявленными в секции interface в .h, потому что мне нужно обращаться к ним в каждом методе класса.
  • Мой проект сделан с интеграцией Kobold2D в проект ARC (но вы знаете, что в прикрепленном проекте Kobold2D ARC не включен из-за проблемы совместимости)

Дело в том, что когда я запускаю проект, все кажется идеальным, но память увеличивается для каждой сцены (страницы), которую я делаю. Страница 1: 30 Мб., Страница 2: 40, Страница 3: 54, Страница 4: 65... После 7 или 8 сцен, Instruments, Xcode или сам iPad вешают приложение без каких-либо сообщений (кроме Instruments с финальным предупреждением о низком уровне памяти).

Почему не происходит освобождения памяти после каждой сцены? Возможно, это из-за ARC и отсутствия переменной super dealloc. Почему текстуры выгружаются отлично, но кажется, что выгрузки нет, потому что память растет без контроля до самого краха?

5
задан skolima 11 February 2012 в 08:06
поделиться