При исследовании утечки памяти я обнаружил проблему, связанную с методом вызова setRootViewController: внутри блока анимации перехода:
[UIView transitionWithView:self.window
                  duration:0.5
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{ self.window.rootViewController = newController; }
                completion:nil];
Если старый контроллер просмотра (тот, который заменяется), в настоящее время представляет собой другой контроллер представления, тогда приведенный выше код не удаляет представленный вид из иерархии представления.
То есть, эта последовательность операций...
- X становится контроллером Root View
 - X представляет Y, так что Y вид на экране
 -  Используя 
transitionWithView:, чтобы сделать Z новым контроллером Root View 
... выглядит хорошо для пользователя, но инструмент "Иерархия просмотра отладки" покажет, что Y-образ все еще находится за Z-представлением, внутри UITransitionView. То есть, после трех шагов выше, иерархия представления:
-  UIWindow
-  UITransitionView
- UIView (просмотр Y)
 
 - UIView (просмотр Z)
 
 -  UITransitionView
 
Я подозреваю, что это проблема, потому что во время перехода представление X фактически не является частью иерархии представлений.
Если я отправлю dismissViewControllerAnimated:NO в X непосредственно перед transitionWithView:, результирующая иерархия представлений:
-  UIWindow
- UIView (представление X)
 - UIView (просмотр Z)
 
 
Если я отправлю dismissViewControllerAnimated: (YES или NO) в X, выполните переход в блоке completion:, тогда иерархия представлений верна. К сожалению, это мешает анимации. Если оживлять увольнение, он тратит время; если он не оживляет, он выглядит сломанным.
Я пытаюсь использовать другие подходы (например, создание нового класса контроллера класса просмотра в качестве моего контроллера корневого представления), но ничего не нашел. Я обновлю этот вопрос, когда пойду.
Конечной целью является переход от представленного представления к новому контроллеру корневого представления напрямую и без оставления иерархии бездействия.