Я вижу огромную утечку памяти при использовании 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;
}
}
А для отмены:
-(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[picker release];
}
Обратный вызов didFinishPickingMediaWithInfo такой же стандартный, хотя мне даже не нужно ничего выбирать, чтобы вызвать утечку.
Вот что я вижу в инструментах, когда все, что я делаю, это открываю UIImagePickerController
, выбираю библиотеку фотографий и нажимаю несколько раз кнопку отмены. Как вы можете видеть, память продолжает расти, и в конечном итоге это приводит к значительному замедлению работы приложения для iPhone
Как вы можете видеть, я открывал средство выбора изображений 24 раза, и каждый раз он выдавал malloc 128 КБ, который никогда не выпускался. В основном 3 МБ из моих общих 6 МБ никогда не выпускаются.
Эта память остается утекшей независимо от того, что я делаю. Даже после перехода от текущего контроллера он остается прежним. Я также реализовал элемент управления выбора в виде одиночного с теми же результатами.
Вот что я вижу, когда углубляюсь в эти две строки:
Любая помощь здесь будет принята с благодарностью! Опять же, мне даже не нужно выбирать изображение. Все, что я делаю, это представляю контроллер и нажимаю кнопку отмены.
Обновление 1
Я скачал и запустил Apple пример использования UIIMagePickerController
, и я вижу, что там происходит та же утечка при работе инструментов (как в симуляторе, так и на телефоне).
http://developer.apple.com/library/ios/#samplecode/PhotoPicker/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40010196
Все, что вам нужно сделать, - это нажать кнопку библиотеки фотографий и нажать кнопку отмены снова и снова, и вы увидите, что память продолжает расти.
Есть идеи?
Обновление 2
Я вижу эту проблему только при просмотре библиотеки фотографий. Я могу выбрать сфотографировать, и открывать и закрывать это снова и снова, без утечки.