Приложение iOS вылетает при нажатии контроллера представления с «animated», установленным в «YES», но работает нормально, если «animated» установлено в «NO» - PullRequest
1 голос
/ 22 августа 2011

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

У меня настроен UINavigationController, который выдвигает контроллер корневого представления. Корневой контроллер представления затем выдвигает новый контроллер представления (фактически это TableViewController), когда нажимается кнопка UIB, и вот где все становится странным.

Приложение вылетает, только если я установил «анимированный» на «ДА».

[[self navigationController] pushViewController:listView animated:YES];

Если я изменил это и установил «анимированный» на «НЕТ», приложение продолжит работу в обычном режиме и работает великолепно ... Я вернул «анимированный» обратно на «ДА», и он снова вылетел.

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

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

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Спасибо, мистер Берна, вы действительно дали мне совет, который привел меня к решению. Дело в том, что контроллер представления, который я нажимал, на самом деле является контроллером представления таблицы, чьи ячейки создаются динамически на основе записей, найденных в NSArray. Я инициализировал NSArray в функции viewDidLoad, однако я установил его на автоматический выпуск, поэтому он был освобожден из памяти, прежде чем CALayer мог нарисовать представление.

1 голос
/ 22 августа 2011

Когда анимация включена, Core Animation обращается к объектам CALayer, отрисованным частям видов, как из корневого контроллера вида, так и из нового контроллера вида.Когда анимация выключена, Core Animation не нуждается в объектах CALayer контроллера корневого представления.Возможно, вы выпускаете какое-то представление в корневом представлении, и оно слишком быстро поддерживает объект CALayer.

...