3

我正在使用UIImagePickerController从应用程序中的 PhotoLibrary 中选择图像。为此,我使用了两种不同的方法。起初我使用了一个类变量UIImagePicker和下面的代码。

     imagepicker = [[UIImagePickerController alloc]init];
     imagepicker.delegate = self;
     imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
     imagepicker.modalTransitionStyle = UIModalTransitionStylePartialCurl;
     [self presentModalViewController:self.imagepicker animated:YES];

上面的代码工作正常。但是当我单击按钮时,在这种情况下需要一些时间来对动画做出反应。然后我使用了这种方法的自动释放池方法

    NSAutoreleasePool *pool;
    pool = [[NSAutoreleasePool alloc] init]; 
    if([UIImagePickerController isSourceTypeAvailable:
        UIImagePickerControllerSourceTypePhotoLibrary])
    {
        UIImagePickerController *picker= [[[UIImagePickerController alloc]init]autorelease];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        picker.modalTransitionStyle = UIModalTransitionStylePartialCurl;
        [self presentModalViewController:picker animated:YES];

    }
    [pool release];

也有魅力。他们俩都显示分析仪没有泄漏。谁能指出我正确的方法。

4

1 回答 1

2

好吧,这里没什么好说的......两种方法都有效,两种方法都是正确的,使用你喜欢的任何一种。

一个小问题:如果您经常展示图像选择器,您最好使用第一种方法,并将其分配给实例变量(它不称为“类变量”!),仅在第一次时,不要释放它直到- dealloc- 这样,每次用户选择图像时,您都会保存图像选择器的连续分配 - 释放。

于 2012-10-30T08:10:46.063 回答