Правильный выпуск UIImagePickerController - PullRequest
2 голосов
/ 06 июня 2011

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

- (IBAction)pickImageFromLibrary:(id)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];

    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentModalViewController:picker animated:YES];

    //  [picker release];
}

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0.0f, 10.0f, 320.0f, 264.0f)];

    self.studyView = imageView;

    [imageView release];

    [self.tableView setTableHeaderView:studyView];

    self.fitImage = [ImageHelper image:image fitInView:studyView];

    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    }

    studyView.image = self.fitImage;

    [self dismissModalViewControllerAnimated:YES];

    [picker release];
 }

Я выделяю UIImagePickerController в первом методе, но разве не логично выпускать его только во 2-м методе, когда я отклоняю его?

1 Ответ

6 голосов
/ 06 июня 2011

Нет, потому что он сохраняется при модальном представлении через presentModelViewController. Это общий шаблон, который вы найдете при представлении новых контроллеров представления, будь то модальные, настраиваемые контроллеры представления или нет. Это нормально:

- (IBAction)pickImageFromLibrary:(id)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];

    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentModalViewController:picker animated:YES];

    [picker release];
}
...