ios - 关闭 UIPopoverController 不会卸载 contentController

标签 ios uiviewcontroller uipopovercontroller

在我的主 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/

相关文章:

iphone - iOS 中如何检测铃声开关状态?

ios - Segue 不适用于静态 UITableView

ios - 我编写仅供个人使用的 iPhone 蓝牙远程控制应用程序的经验

ios - 初始化器不会覆盖其父类(super class)中的指定初始化器

ios - 在呈现 UIPopoverViewController 时,我怎样才能使除 sourceView 之外的所有内容变暗?

android - 应用程序打开为 "background process"。有可能 react native 吗?

ios - 从子 ViewController 执行 segue

ios - 使用自定义动画呈现 ViewController

objective-c - 在 UITextView 中长按获取单词

ios - 为什么第一次弹出窗口要花很多时间?