即使被释放,图像选择器控制器也会获得疯狂的记忆

时间:2010-06-30 11:32:51

标签: iphone uiimagepickercontroller

我的图片选择器初始化为:

  

self.imgPicker = [[UIImagePickerController alloc] init];

     

self.imgPicker.allowsEditing = YES;

     

self.imgPicker.delegate = self;

     

self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

介绍:

  

[self initImagePickerFromLibrary]; ----(这称之为我之前提到的那些)

      [self presentModalViewController:self.imgPicker animated:YES];


      [imgPicker release];
苹果乐器说: 在调用选择器之前使用的内存是3 Mb.While选择器在功能12Mb。虽然编辑图像是28Mb而我的应用程序崩溃。有人确实找到了解决方案吗?

1 个答案:

答案 0 :(得分:3)

我想到的一件事是你正在做self.,这可能意味着您的图像选择器会被保留两次。有一次,因为你正在分配它,因为你正在使用一个setter。

@property的{​​{1}}行是什么样的?它有imgPicker吗?如果是,您应该将上面第一个引用中的第一行更改为:

retain

即。删除imgPicker = [[UIImagePickerController alloc] init];

同样在第二行,您将直接发布self.。如果您的imgPicker确实有保留,则应该执行以下操作:

@property

原因是self.imgPicker = nil; 合成在设置时保留并释放对象。如果@property release未将其设置为imgPicker,然后再尝试将其设置为新值,系统将尝试nil已经release释放对象,可能会崩溃。以上内容与:

相同
[imgPicker release];
imgPicker = nil;