iPhone - viewDidUnload / viewDidLoad вызван непоследовательно - PullRequest
1 голос
/ 15 января 2011

Сегодня я проводил тестирование и отладку своего приложения для Iphone и столкнулся с некоторым странным поведением.

В моем MainView у меня есть два модальных представления, и при показе одного из них с использованием presentModalViewController я заметил, чтометод viewDidUnload моего MainView был вызван, когда это не происходило при показе другого.Это был тот же случай для метода viewDidLoad (из MainView) при закрытии подпредставлений.

Я проверил два метода для открытия и закрытия подпредставлений, и единственное отличие, которое я обнаружил, было в modalTransitionStyle.В том, который активировал viewDidUnload / viewDidLoad, я использовал UIModalTransitionStyleFlipHorizontal, а в другом UIModalTransitionStyleCrossDissolve.Затем я начал экспериментировать, меняя два стиля и используя другие стили перехода, и я обнаружил, что это действительно было причиной различного поведения.Фактически, при использовании UIModalTransitionStyleFlipHorizontal методы viewDidUnload / viewDidLoad «родительского» контроллера представления всегда вызывались, в то время как это никогда не происходило ни с одним из других стилей перехода.

Мой вопрос теперь заключается в следующемдолжен вести себя так, и если нет, то какое поведение является правильным.Должны ли вызываться методы unload и load при отображении и закрытии модального представления.

Кроме того, может ли кто-то еще подтвердить или не подтвердить это поведение?

Thanx

PS.viewDidLoad метод двух вызываемых контроллеров представления вызывается каждый раз.Просто чтобы уточнить:)

1 Ответ

0 голосов
/ 15 января 2011

Должны ли методы unload и load вызываться при отображении и закрытии модального представления или нет.

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

Таким образом, в зависимости от ситуации с памятью устройства и требований к памяти отображаемого контроллера модального режима поведение при выгрузке / загрузке должно отличаться. Оно не должно зависеть от modalTransitionStyle ИМО.

...