При отображении вашего ModalViewController в TestViewController displayModal: вы отпускаете свой modalController (строка 20). Не делайте этого - вам нужен ViewController, чтобы остаться в живых. Если вы отпустите его, только представление останется живым (как оно сохраняется при добавлении в качестве подпредставления).
Кроме того, в ModalViewController hideModalEnded вы выпускаете modalView, который вы не сохранили, поэтому я бы тоже удалил его.
Так что теперь вам нужно освободить только экземпляр ModalViewController после удаления представления. Вы можете сделать это путем [самостоятельного выпуска]; в hideModalEnded, но это, кажется, необычный шаблон, и я не чувствую себя хорошо, делая это.
Некоторые предложения:
- Сохраняйте методы отображения и скрытия в
тот же класс.
- Держите ивара рядом с
контроллер.
- Другая возможность: удалить
ModalViewController в целом и
положить все в TestViewController - но это очень зависит от того, сколько действий будет происходить в реальной жизни.