我在iPhone應用程序中使用UIImagePickerController
時發現內存泄漏。我使用的標準代碼從蘋果的文件來實現控制:UIImagePickerController內存泄漏
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;
}
}
而對於取消:
-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[picker release];
}
的didFinishPickingMediaWithInfo回調是一樣斯塔納德,雖然我不甚至要挑不出什麼造成泄漏。
下面是我在文書中看到的,當我所做的只是打開UIImagePickerController
,挑選照片庫並重覆按取消。正如你可以看到內存不斷增長,並最終導致我的iPhone應用程序大幅減速。
正如你可以看到我打開影像選擇器24次,每一次都malloc分配128KB這是從來沒有釋放。基本上我的總6mb中有3mb從未發佈。
無論我做什麼,該內存都會泄漏。即使離開當前的控制器,仍然是一樣的。我也將picker控件作爲一個singleton實現,結果相同。
這是我所看到的,當我深入到這兩條線:
任何幫助這裏將不勝感激!再次,我甚至不必選擇一個圖像。我所做的只是呈現控制器,然後按取消。
更新1
我下載並運行使用UIIMagePickerController
的蘋果的例子,我看到相同的泄漏發生有運行工具(無論是在模擬器和手機)時。
所有你需要做的就是打照片庫鈕,撞取消一遍又一遍,你會看到內存保持增長。
任何想法?
更新2
查看照片庫時,我只看到了這個問題。我可以選擇拍照,並且一遍又一遍地打開和關閉,而不會泄漏。
如果你已經NSZombieEnabled(我認爲這也是該計劃設置的複選框),這會導致明顯的泄漏... –
什麼OS版本/設備?如果是iOS 5,請將其報告給Apple或在適當的開發論壇中討論。 –
使用iOS 4.3。我運行的手機是iPhone 4. – Watson