Wat*_*son 8 iphone memory-leaks objective-c uiimagepickercontroller ios
UIImagePickerController
在我的iPhone应用程序中使用时,我发现内存泄漏很大.我正在使用apple文档中的标准代码来实现控件:
UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
switch (buttonIndex) {
case 0:
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePickerController animated:YES];
break;
case 1:
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:imagePickerController animated:YES];
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
并取消:
-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[picker release];
}
Run Code Online (Sandbox Code Playgroud)
didFinishPickingMediaWithInfo回调就像标准一样,虽然我甚至不需要选择任何导致泄漏的东西.
这是我在乐器中看到的,当我所做的只是打开UIImagePickerController
,选择照片库,并反复按取消.正如您所看到的,内存不断增长,最终导致我的iPhone应用程序速度大幅下降.
正如你所看到的那样,我打开了24次图像选择器,每次都是malloc'd 128kb,它从未发布过.基本上我总共6mb中的3mb永远不会被释放.
无论我做什么,这个记忆都会泄露.即使在离开当前控制器之后,仍然是相同的.我还将拾取器控件实现为具有相同结果的单例.
以下是我深入研究这两行时所看到的内容:
这里的任何帮助将不胜感激!再说一次,我甚至不必选择图像.我只是出现控制器,然后按取消.
我下载并运行了苹果的使用示例,UIIMagePickerController
我看到在运行仪器时(在模拟器和手机上)都发生了相同的泄漏.
所有你要做的就是点击照片库按钮并反复点击取消,你会看到内存不断增长.
有任何想法吗?
我只在查看照片库时才看到此问题.我可以选择拍照,一遍又一遍地打开和关闭那张照片,没有泄漏.
这是SDK中的一个错误.向Apple提交报告.我有samme isue.它也记录在这里:http://www.cocoabuilder.com/archive/cocoa/285293-iphone-memory-leak-can-explain.html 这是一年多以前仍然没有修复.
尝试在释放之前将其设置UIImagePickerController.delegate
为。nil
-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
picker.delegate = nil;
[picker release];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5748 次 |
最近记录: |