在我的应用程序中,我有一个UIImagePickerController。当选择一个图像时,我的视图控制器需要获取该图像并将其传递给另一个视图控制器,该控制器被推到self.navigationController上。但是我总是得到SEGFAULTS或nil参数,诸如此类。如果您能告诉我这段代码出了什么问题,我将不胜感激:

FirstViewController.m:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
 self.currentpicture = [img copy];
 [self dismissModalViewControllerAnimated:YES];
 [self goNext];
}
-(void)goNext{
 SecondViewController *vc = [[SecondViewController alloc] initWithNibName:@"Second" bundle:nil];
 [vc giveMePicture:currentpicture];
 [self.navigationController pushViewController:vc animated:YES];
}


SecondViewController.m:

-(void)giveMePicture:(UIImage *)data {
 self.currentpicture=[data copy];
}


它们都将currentpicture定义为UIImage * currentpicture;
我现在应该将currentpicture作为一些数据,但是每次都会崩溃!我尝试了许多不同的方法,但我无法弄清楚。

最佳答案

如果我错了,请纠正我,但是UIImage不符合NSCopying,因此您无法成功复制它。

您可能想要做的就是保留图像。如果self.currentpicture是'retain'属性,它将自动释放先前的对象并保留新的对象,因此只需执行以下操作:

self.currentpicture = img;


否则,请自己做:

[self.currentpicture release];
self.currentpicture = [img retain];


在这两种情况下,当您不再需要图像时,仍然都必须调用[self.currentpicture release]。通常,您可以在“自”对象的dealloc方法中执行此操作。

10-08 05:48