UIViewController Память Предупреждение о проблемах - PullRequest
0 голосов
/ 09 февраля 2010

Что-то странное происходит с моими контроллерами вида. Когда приложение applicationDidReceiveMemoryWarning публикуется, оно удаляет все представления из стека, кроме видимого представления (представление второго уровня), что является ожидаемым поведением. Однако, если я затем вернусь к корневому представлению, у него также будет кнопка «Назад», которая вернется к себе. С этого момента представления приложения ведут себя очень странно, так как приложение бесполезно.

Еще более странно, что точно такой же вид второго уровня (без утечек памяти) может нормально работать без каких-либо предупреждений о памяти, но иногда при запуске приложения появляется предупреждение о памяти и, следовательно, проблемы с навигацией. Представление содержит все те же элементы управления и данные, что и раньше, но время от времени может быть слишком большим для устройства. Это как-то связано с памятью, доступной на устройстве во время запуска? Кажется, это происходит только на оборудовании.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Я нашел проблему - и это мой код в конце концов.

При запуске приложения я загружаю свой контроллер корневого представления, затем в методе viewDidLoad моего корневого контроллера я говорю ему загрузить второе представление, если условие выполняется.

Когда появляется предупреждение о памяти, он воссоздает контроллер корневого представления при выходе из второго представления, а затем снова создает второе представление, все еще показывая корневой вид.

Тогда навигация становится умственной.

0 голосов
/ 09 февраля 2010

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

Хм, здесь я не могу дать много советов, только чтобы вы могли проверить ссылки на нераспределенные области

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...