在我的主 viewController 中,我声明了两个 ivar,如下所示:
UIPopoverController* __popoverController;
HPSQuestionnaireEditorController* _questionnaireEditorController;
然后我显示一个 UIPopOver 如下:
_questionnaireEditorController = [ [ HPSQuestionnaireEditorController alloc ] initWithNibName:nil bundle:nil ];
__popoverController.delegate = self;
[__popoverController setPopoverContentSize:CGSizeMake(400, 500)];
[_questionnaireEditorController setContentSizeForViewInPopover:CGSizeMake(400, 500)];
[__popoverController presentPopoverFromRect:editWrapper.frame inView:editWrapper.superview permittedArrowDirections:UIPopoverArrowDirectionLeft | UIPopoverArrowDirectionRight animated:YES ];
当需要关闭弹出窗口时,我手动执行如下操作:
[__popoverController dismissPopoverAnimated:YES ];
__popoverController = nil;
_questionnaireEditorController.view=nil;
_questionnaireEditorController=nil;
我正在使用 ARC。
在 _questionnaireEditorController 中,我有以下内容:
- (void)viewWillUnload
{
NSLog(@"HPSQuestionnaireEditorController viewWillUnload starting");
}
但是,这永远不会运行。弹出窗口关闭似乎并未实际卸载 View 或其中托管的 Controller 。
我做错了什么?谢谢。
最佳答案
你没有做错任何事。 UINavigationControllers、UIPopoverControllers 和 UITabBarControllers 不需要在 View 离开屏幕时立即卸载它。他们有缓存后端,直到完全不需要或他们需要内存为止。
如果你不需要它来卸载那么你会没事的。别担心。
关于ios - 关闭 UIPopoverController 不会卸载 contentController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007348/