Я работаю над приложением для iPad (только) и наткнулся на странную проблему. Приложение перестает работать после предупреждения о памяти на iPad 1, но отлично работает на iPad 2.
Я использую ARC и нацеливаюсь на iOS 5. Я использую перья, и большинство моих активов отображаются с помощью UIImageViews. У меня также есть несколько сотен кнопок и множество распознавателей жестов ... Я повторно посмотрел видео WWDC11 (сеансы 323 и 322) на ARC, и я, кажется, не делаю ничего особенного.
Приложение интенсивно использует UIImage, я делаю много анимаций, используя UIImage. Однако я использую конструктор initWithContentsOfFile, а не вызов imageNamed. Я пытаюсь предотвратить кэширование изображений системой.
Я также использую GCD для планирования звуковых эффектов и анимации просмотров. Я всегда делаю это в главном потоке.
Приложение использует UINavigationController, который никогда не имеет более 1 UIViewController в своем стеке. Я могу подтвердить, что это правда, потому что didReceiveMemoryWarning вызывается только на текущем контроллере представления (я регистрирую вызов).
Я не понимаю, почему Instruments сообщает о больших числах (как будто контроллеры представления не освобождаются) в инструментах Allocations и VM Tracker. Инструмент Allocations показывает небольшое падение, когда я перемещаюсь от одного контроллера представления к другому (что я и ожидаю), но инструмент VM Tracker показывает, что Dirty Size не сбрасывается, когда я делаю то же самое. В конце концов приложение использует слишком много памяти и завершает работу (на iPad 1). Когда я получаю предупреждения о памяти на iPad 2, приложение НЕ закрывается, хотя ...
Такое ощущение, что мои изображения, звуки или изображения не разрушаются, а память не восстанавливается ... Моя иерархия объектов очень проста, и не должно быть никаких циклов сохранения. У меня даже нет простых делегатов ...
У вас есть предложения? Я действительно не хочу выпускать это приложение только для iPad 2 или новее ... Это приложение для детей, и это будет жалко ... Я был бы намного счастлив узнать, что я делаю что-то не так , так как я действительно хочу убедиться, что это приложение лучшее, что может быть ...
Ура,
Ник