утечки кода iPhone и я не знаю почему - PullRequest
1 голос
/ 24 июня 2009

Это хорошо известный фрагмент, как выбрать картинку из библиотеки фотографий 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];

  }
}

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

альтернативный текст http://img.skitch.com/20090624-rtqp2mgsnyynkgb97c9e8d2g9c.jpg

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

Ответы [ 3 ]

6 голосов
/ 24 июня 2009

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

4 голосов
/ 24 июня 2009

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

UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease];
2 голосов
/ 24 июня 2009

Разве вы не должны делать авто-релиз на UIImagePickerController?

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

...