UIImagePickerController的内存泄漏问题

时间:2009-01-28 10:37:13

标签: iphone objective-c image memory-leaks picker

我正在使用UIImagePickerController类获得内存泄漏。

以下是我使用它的方式:

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:YES];
    [picker release];

要删除选择器,我在[picker dismissModalViewControllerAnimated:YES];didFinishPickingImage中拨打imagePickerControllerDidCancel

-

仪器显示该指令导致大约160字节泄漏:

+[UIImagePickerController _loadPhotoLibraryIfNecessary]

  

显然这个问题已经并且正在扰乱许多人和解决方案   避免这个问题就是建立一个   单身课专门用于采摘   来自图书馆或使用捕获的图像   设备的内置摄像头。

     

有人想要添加一些东西吗?

5 个答案:

答案 0 :(得分:2)

作为one of the first articles关于使用单身人士的必要性的作者,其动机是防止7/8图像捕获时的崩溃,而不是因为对泄漏的任何特别担心。 160字节很烦人,但不是主要问题,因此不值得担心(因为开发人员无法修复)。

答案 1 :(得分:0)

您是否尝试删除代理行?在委派给AVAudioPlayer时,self遇到了类似的问题。 (尽管访问者在两种情况下都说assign。)如果泄密随着委托而消失,您可以委托给另一个对象。

答案 2 :(得分:0)

如果您使用GeneralBlock看到内存泄漏多个SegmentMachOUIImagePickerController

尝试将CoreLocation框架和MapKit框架添加到您的项目中。我没有看到仪器工具泄漏检查中的内存泄漏。我不知道UIImagePickerController与这些框架的关系。我不确定它是不是很好的解决方案。 “在不使用或不必要的情况下添加框架”。

使用UIImagePickerController我也有内存泄漏。即使在从developer.apple.com下载的示例代码“PhotoLocation”和“iPhoneCoreDataRecipes”中也会发生内存泄漏。我还通过将这些框架添加到下载的示例代码中进行检查。没有内存泄漏了。

答案 3 :(得分:0)

我在仪器中发现了内存分配泄漏。 我所做的只是打开和关闭图像选择器(打开/取消)并使用Apple代码,我的代码和其他人的代码。

每次都显示出分配上升和上升,好像选择器没有被释放。 如果你试图释放它,它会崩溃(过度释放)。

然后我发现了一个非常有用的网页,基本上说明了:

“在设备上进行测试时不会发生这种情况”

所以我从模拟器切换并在设备上运行测试。 Lo&看,没有分配增加,而且表现正常。

然而,这完全是邪恶的,现在我们不能信任模拟器来做可靠的工作。无论这是否与您的具体问题相关,我还会介绍其他任何要添加的内容,而我要添加的内容是不要在模拟器上测试内存!

答案 4 :(得分:0)

原因可能是您忘记发布图片。因为每次你写

UIImageView.image = image_a;

然后,image_a将保留一次。

UIImageView.image = nil之前,image_a最终可以释放。

我以这种方式解决了我的问题。