gpt4 book ai didi

iphone - 即使释放图像选择器 Controller 也会占用疯狂的内存

转载 作者:行者123 更新时间:2023-12-03 20:58:26 27 4
gpt4 key购买 nike

我的图像选择器初始化如下:

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

self.imgPicker.allowsEditing = YES;

self.imgPicker.delegate = self;

self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

演示:

[self initImagePickerFromLibrary]; ----(this calls the lines I have mentioned before)

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


[imgPicker release];

苹果仪器说道:在调用选择器之前,使用的内存为 3 Mb。当选择器处于功能中时,内存为 12Mb。编辑图像时,内存为 28Mb,我的应用程序崩溃了。有人找到了解决方案吗?

最佳答案

想到的一件事是您正在执行 self. 这可能意味着您的图像选择器被保留两次。一次是因为您要分配它,一次是因为您使用了 setter。

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

imgPicker = [[UIImagePickerController alloc] init];

即删除 self 。

还在第二行中,您直接释放 imgPicker 。如果您的 @property 确实有保留,您应该这样做:

self.imgPicker = nil;

原因是@property在设置对象时合成保留和释放对象。如果您释放imgPicker而不将其设置为nil,然后稍后尝试将其设置为新值,系统将尝试释放已经释放的对象,并且可能会崩溃。以上与执行相同:

[imgPicker release];
imgPicker = nil;

关于iphone - 即使释放图像选择器 Controller 也会占用疯狂的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3148800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com