Одна из наиболее распространенных причин, по которой может произойти сбой приложения, - это ссылка или отправка сообщения объекту, который уже был освобожден из памяти.И этот тип ошибки может быть легко найден с помощью NSZombieEnabled и заглядывая в консольное сообщение.Так что, если вы еще не пробовали это, это первое, что вы должны сделать.
Проблема может быть в LiveViewController, но может быть и в других контроллерах представления.Я бы не поверил, что проблема в LiveViewController на 100%, потому что контроллер представления не будет пытаться освободить свое представление, когда представление не отображается, пока не получит предупреждение памяти.И вы запускаете приложение с помощью симулятора, вряд ли у него будет предупреждение о памяти, если вы его не симулируете.
Вы, вероятно, знаете, что контроллер представления никогда не создает представление, если представление не используется объектом.У одного из других контроллеров представления может быть глупая ошибка в процессе загрузки представления, которая вызывает сбой.Или, возможно, вы выпустили другой контроллер вида по ошибке.Убедитесь на 100%, что другие контроллеры представлений не имеют проблем с отображением их представлений самостоятельно, когда вы продолжаете переключаться между их представлениями (не показывая LiveViewController).
Итак, я бы попробовал NSZombieEnabled и проверить,он получает доступ к освобожденному объекту, и если он делает, что это за объект.Также я дважды проверю, связана ли проблема с LiveViewController.Если это не поможет, я буду записывать сообщение, когда LiveViewController и его liveView будут освобождены (для liveView вам нужно создать его подкласс).Поскольку свойство delegate
почти всегда не сохраняет объект, если объект LiveViewController освобожден (что не должно происходить), а liveView по-прежнему имеет ссылку на него в свойстве делегата, это приведет к сбою.