2009-06-24 1 views
1

это хорошо известный фрагмент кода, как выбрать изображение из библиотеки фотографий iPhone:iPhone утечки кода, и я не знаю, почему

- (IBAction)selectExistingPicture { 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentModalViewController:picker animated:YES]; 
      [picker release]; 

    } 
} 

Здесь вы можете увидеть скриншот инструментов (fullscreen).

alt text http://img.skitch.com/20090624-rtqp2mgsnyynkgb97c9e8d2g9c.jpg

Почему это утечка? Я не понимаю, потому что сборщик выпущен правильно, я думаю.

ответ

6

UIImagePickerController является known to leak. Если вы собираетесь использовать его более одного раза, рекомендуется повторно использовать один экземпляр

+2

Хорошо, спасибо. Странно, что Apple отказывается от приложений из-за утечек, но сама производит утечки. – Stefan

4

Вы представляете сборщик, но затем теряете указатель на него, когда вы покидаете метод. Поскольку выделена память, это ваша утечка. Попытайтесь:

+0

Я пробовал это раньше: та же проблема. Извините, я забыл: [сборщик] в моем посте. Отредактировал его. – Stefan

2

Вам не нужно делать автореферат на UIImagePickerController?

UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];

+0

Тот же ответ, что и выше ;-) Я пробовал это раньше: та же проблема. Извините, я забыл: [сборщик] в моем посте. Отредактировал его. – Stefan