【问题标题】:UIImagePickerController having issues even after declaring from the AppdelegateUIImagePickerController 即使在从 Appdelegate 声明后也有问题
【发布时间】:2011-07-29 07:07:13
【问题描述】:

我们正在做一个使用 UIImagePickerController 的照片应用程序。为了只维护一个控制器实例,我们在 appdelegate 中声明了它。但即使在这样做之后,内存泄漏仍然存在。任何人都可以帮助我们
这是我们的代码

在 AppDelegate.h 中

UIImagePickerController *imagePicker;
@property (nonatomic, retain) UIImagePickerController *imagePicker;

在 AppDelegate.m 中

@synthesize imagePicker;

在 applicationDidFinishLaunching 事件中

imagePicker = [[[UIImagePickerController alloc] init] autorelease];

需要在CameraView中调用这个UIImagePicker

在 CameraView.h 中

RedDawnMediaAppDelegate *appDel;
@property (nonatomic, retain) RedDawnMediaAppDelegate *appDel;

在 CameraView.m 中

@synthesize appDel;

在 viewDidLoad 中

appDel=(RedDawnMediaAppDelegate*)[[UIApplication sharedApplication] delegate];

appDel.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// Hide the camera controls:
appDel.imagePicker.showsCameraControls = NO;
appDel.imagePicker.navigationBarHidden = YES;
appDel.imagePicker.delegate = self;

// Make the view full screen:
appDel.imagePicker.wantsFullScreenLayout = YES;
appDel.imagePicker.cameraViewTransform =       CGAffineTransformScale(appDel.imagePicker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y);

// Now incert our overlay view (it has to be here cuz it's a modal view):
appDel.imagePicker.cameraOverlayView = overlayView;

[self presentModalViewController:appDel.imagePicker animated:YES];

在 didFinishPickingMediaWithInfo 中

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

[appDelegate.imagePicker dismissModalViewControllerAnimated:YES];

uploadImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
[uploadImage retain];
NSData *imageData = UIImageJPEGRepresentation(uploadImage, 0.5);
//[uploadImage release];
UIImage *image=[UIImage imageWithData:imageData];


self.view.frame = CGRectMake(0, 0, 320, 480);
self.wantsFullScreenLayout = YES;
objCameraImageView = [[CameraImageView alloc] initWithNibName:@"CameraImageView" bundle:[NSBundle mainBundle]];
[objCameraImageView setParentController:self];
objCameraImageView.cameraImage = image;
[image release];
uploadImage = nil;
[self.view addSubview:objCameraImageView.view];
[self release];
}

拍照后,我们会在另一个视图中显示预览。所以我们多次调用 Cameraview 导致内存泄漏请帮助。

【问题讨论】:

    标签: iphone objective-c memory-leaks uiimagepickercontroller


    【解决方案1】:

    首先,您不必担心只维护一个 imagepickercontroller 实例。从相机获取图像比您所做的要简单得多。

    在这里查看我的帖子:

    How to take picture from Camera & saved in Photo Gallery by programmatically?

    因为我在完成获取图像后释放了选择器。不会有内存泄漏!

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2015-03-12
      • 2018-09-03
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多