среда, 15 сентября 2010 г.

Переполнение памяти из-за больших размеров окон (UIView)

Разрабатываемое iPhone-приложение может начать неожиданно падать и при этом отладчик никак не в состоянии помочь.

После нескольких дней поиска (когда программа перестала падать после закомментирования содержимого функции drawRect класса моего окна, наследующего от UIView) удалось случайно выяснить, что слишком большой размер окна (который можно задать либо в Interface Builder либо через self.bounds.size) требует слишком много памяти (в моём случае - это цена за возможность безтормозной прокрутки такого большого окна, если оно отображает контент для UIScrollView). Размер окна составлял примерно 4000 на 2500 пикселей.

Стоило лишь уменьшить размер окна в половину, как падение программы прекратилось.

Ранее программа не падала при прежнем большом размере окна. Но стоило только добавить поддержку автоматического поворота интерфейса при изменениях ориентации девайса, как эта проблема вылезла наружу. Вероятно система резервирует памяти больше для окон, размер которых перестраивается в зависимости от ориентации интерфейса.

Комментариев нет:

Отправить комментарий

Постоянные читатели