调用 UIImagePickerController (SourceType Camera) 卸载标签栏控制器中的其他页面(其他标签)

Posted

技术标签:

【中文标题】调用 UIImagePickerController (SourceType Camera) 卸载标签栏控制器中的其他页面(其他标签)【英文标题】:Calling the ImagePickerController (SourceTypeCamera) unloads other pages (other tabs) in tabbar controller 【发布时间】:2011-07-19 05:40:16 【问题描述】:

我有 2 个选项卡,一个包含 imagepicker 控制器,另一个包含 UItableView 作为 uiview 控制器的子视图。

我意识到当我调用 imagepicker 控制器 (SourceTypeCamera) 时,我在另一个选项卡中的页面正在被卸载('view didUnload' 方法)被触发。

这是我应该预料到的正常行为吗? (其他选项卡的视图被卸载)还是由于使用相机时的一些内存问题,我应该小心?

【问题讨论】:

【参考方案1】:

正如您所说,viewDidUnload 可以随时触发,并且通常与内存不足警告相关联,否则即使在内存允许的情况下不需要缓存,视图控制器的视图也会被缓存。所以从严格意义上说,它既不是预期的也不是意外的,因为它取决于系统其余部分的总状态。

话虽如此,UIImagePickerController 在捕获图像时非常消耗内存(参见例如this image,其中每个尖峰都与根据the related blog“捕获图像”的 UIImagePickerController 实例相关),因此其他视图被逼出记忆并不奇怪。

没有记录的机制,也没有理由让UIImagePicker 强制其他控制器投机地转储他们的视图。

【讨论】:

感谢您对此的深刻见解。所以换句话说,我猜我不应该过分担心这种行为? 不,轶事证据表明这是一种常见的体验,而不是您做错了或做得不好的结果。

以上是关于调用 UIImagePickerController (SourceType Camera) 卸载标签栏控制器中的其他页面(其他标签)的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 生命周期 UINavigationController

如何从 webview 使用 UIImagePickerController

iPhone OS 3.0 中的 UIImagePickerController

iOS开发——打开手机相册,获取图片

如何使用 iphone 中的核心数据将图像存储到 sqlite? [复制]

Java中方法调用总结