Я вижу огромную утечку памяти при использовании 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 раза, и каждый раз он выделял 128kb, которые так и не были выпущены. Обычно 3 МБ из моих 6 МБ никогда не высвобождаются.
Эта память остается пропущенной, что бы я ни делал. Даже после перехода от текущего контроллера он остается прежним. Я также реализовал средство выбора как одноэлементный элемент с теми же результатами.
Вот что я вижу, когда углубляюсь в эти две строки:
Любая помощь здесь будет принята с благодарностью! Опять же, мне даже не нужно выбирать изображение. Все, что я делаю, это представляю контроллер и нажимаю «Отмена».
Я загрузил и запустил пример Apple с использованием UIIMagePickerController
, и я вижу ту же утечку, которая происходит там при запуске инструментов (как симуляторе и по телефону).
Все, что вам нужно нужно нажимать кнопку библиотеки фотографий и снова и снова нажимать «Отмена», вы увидите, что объем памяти продолжает расти.
Есть идеи?
Я вижу эту проблему только при просмотре библиотеки фотографий. Я могу сделать снимок, открывать и закрывать его снова и снова, без утечки.