iPhone 中 UIImagePickerController 的内存泄漏问题
Posted
技术标签:
【中文标题】iPhone 中 UIImagePickerController 的内存泄漏问题【英文标题】:Memory Leak Problems with UIImagePickerController in iPhone 【发布时间】:2009-07-27 18:07:49 【问题描述】:我正在为 UIImagePicker 使用以下代码,
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
当我运行仪器时,我在代码的第一行看到内存泄漏。虽然我正在发布它,但它仍然显示内存泄漏,有没有人知道我哪里出错了。
我从 iPhone 开发人员示例代码帮助中安装了 iPhoneCoreDataRecipes 应用程序,但它遇到了同样的问题。
【问题讨论】:
具体泄露了什么?是 UIImagePickerController 实例吗? leak 与这段代码无关,这段代码没问题,一定是在别的地方…… 我的意思是无论如何我都能看到 泄漏与第一行代码有关。当您进入详细扩展视图时,它会将您带到第一行代码。 【参考方案1】:我自己也看到了。我认为这是 Apple 代码中的一个问题,我通过只保留 UIImagePickerController 的单个实例并根据需要重新使用它来“解决”它。否则,我的应用程序将在 UIImagePickerController 实例化 20 次左右后耗尽内存。
【讨论】:
【参考方案2】:我认为这是苹果代码中的一个错误。当您显示图像选择器控制器时,即使您明确释放了选择器,它们似乎也没有正确释放一些小东西。
【讨论】:
【参考方案3】:我相信 Apple 建议将 UIImagePicker 用作单例,这意味着在整个程序运行时您只有一个控制器实例。如果您考虑一下,您只需要一个实例,因为可以使用同一个控制器多次拾取或拍照。 UIImagePickerController 似乎是内存密集型的,因此初始化多个实例可能会导致内存警告,如果您没有考虑到这一点,可能会释放其他视图并导致问题。
【讨论】:
以上是关于iPhone 中 UIImagePickerController 的内存泄漏问题的主要内容,如果未能解决你的问题,请参考以下文章
在 iphone 5 和 iphone 6 中动态设置字体大小