2009-01-28 52 views
1

我得到与UIImagePickerController类的内存泄漏。与UIImagePickerController内存泄漏问题

这里是我如何使用它:

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

要删除选取器我didFinishPickingImageimagePickerControllerDidCancel调用[picker dismissModalViewControllerAnimated:YES];

-

仪器显示周围160bytes泄漏,因为这指令的结果:

+[UIImagePickerController _loadPhotoLibraryIfNecessary]

显然,这个问题已经和令人不安的人多了,解决 避免这个问题是建立一个 singleton类专用于从库中拾取 图像或使用 设备的内置摄像头捕获。

任何人想添加的东西?

+0

http://stackoverflow.com/questions/24822625/getting-memory-warning-while-using-uiimagepickercontrolleroriginalimage-to-get-i/24830879#24830879 – 2014-07-28 09:06:17

回答

2

由于one of the first articles关于必要使用一个单独的作者,动机是为了防止在7/8日拍摄的一声,不是泄漏任何特别的担心,因为。 160字节很烦人,但不是主要问题,因此不值得担心(因为它不能由开发人员修复)。

+0

我会感兴趣的是,你是否仍然看到后的崩溃7或8张照片。我尝试重现2.2.1中的帖子中描述的问题,并在20张图片后没有崩溃,在每张图片后释放拾取器。它看起来像是问题的解决或我正在做与你不同的事情。 – 2009-01-28 17:50:37

0

您是否尝试删除委托行?在委托给self时,我遇到了与AVAudioPlayer类似的问题。 (即使访问者在两种情况下都表示assign)。如果代理泄漏消失,您可以委托给其他对象。

0

如果您看到内存泄漏的几个GeneralBlockSegmentMachO使用UIImagePickerController

尝试通过增加CoreLocation框架和MapKit框架到您的项目。我在仪器工具泄漏检查中看不到内存泄漏。我不知道如何UIImagePickerController与这些框架相关。我不确定这是否是好的解决方案。 “无需使用或不需要添加框架”。

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

0

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

每次都显示分配正在进行,好像选取器没有被释放。 如果您试图释放它,它会崩溃(超过释放)。

然后我找到了一个真正有用的网页,基本上说:

所以我从模拟器切换和运行在设备上测试“在设备上测试时不会出现这种情况”。 Lo &看不到分配增加,它表现正常。

然而,这是完全邪恶的,现在我们可以不信任模拟器做一个可靠的工作。无论这是否与你的具体问题有关,我把你添加到其他任何东西上,我要添加的东西不要在模拟器上测试内存!

0

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

UIImageView.image = image_a; 

然后,image_a将被保留一次。

直到你让UIImageView.image = nil,当image_a最终可以释放。

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