调用 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