Как уже упоминалось, viewDidUnload - это метод UIViewController.Не гарантировано, что вам позвонят.Он вызывается только в ситуациях нехватки памяти, когда приложение освобождает представление контроллера для освобождения памяти.Это дает вам возможность освободить любое из подпредставлений представления, которые вы, возможно, сохранили в качестве свойств вашего контроллера.
Если вы вызываете removeFromSuperview для представления вашего контроллера представления, то вы, вероятно, используете UIViewController вконтекст, который он не был предназначен для обработки.Контроллеры вида предназначены для управления полноэкранными видами.Ожидается, что эти представления будут представлены в iPhone всего лишь в нескольких контекстах:
- В качестве полноэкранного вида контроллера корневого представления окна
- В полноэкранном режиме виерархия экранов, управляемых UINavigationController
- как полноэкранное представление, представленное на вкладке
- как полноэкранное представление, представленное с использованием presentModalViewController: animated:
как долготак как вы используете контроллер представления в этих контекстах (плюс пару других контекстов на iPad), то вы можете надежно управлять жизненным циклом своего представления с помощью loadView, viewDidLoad, viewWillAppear: animated :, viewDidAppear: animated :, viewWillDisappear: animated:, и viewDidDisappear: animated :, и методы viewDidUnload (опять же, имея в виду, что viewDidUnload вызывается не всегда).
Единственный раз, когда вы обычно передаете представление контроллера представления в addSubview: это когда выдобавьте вид вашего корневого контроллера в окно.Если вы хотите попытаться использовать вложенный контроллер представления для управления неполноэкранным подпредставлением, вам нужно будет вручную вызвать его методы viewWill / DidAppear / Disappear: animated: и viewDidUnload в соответствующее время из контроллера вашего полноэкранного представления.