ios – 使用UIImagePickerController时的内存警告

ios – 使用UIImagePickerController时的内存警告,第1张

概述我在iPhone上使用相机时会收到内存警告.我也在使用ARC. 当您拍照并按下相机视图控制器上的“使用照片”按钮时,我会收到内存警告.目的是按下“使用照片”按钮,它会改变ImageView的内容. 我认为内存问题可能是由于捕获的图像是全屏的,而ImageView是250h 250w.但我尝试缩小相机拍摄的图像大小,然后将其分配给ImageView.然而,即使我将其调整为100 x 100,这仍然无 我在iPhone上使用相机时会收到内存警告.我也在使用ARC.

当您拍照并按下相机视图控制器上的“使用照片”按钮时,我会收到内存警告.目的是按下“使用照片”按钮,它会改变ImageVIEw的内容.

我认为内存问题可能是由于捕获的图像是全屏的,而ImageVIEw是250h 250w.但我尝试缩小相机拍摄的图像大小,然后将其分配给ImageVIEw.然而,即使我将其调整为100 x 100,这仍然无效.

其次,我没有将相机拍摄的照片分配给ImageVIEw,但它仍然有内存警告.

我在这里查看了其他答案并尝试了上面的两个,但它仍然存在.我将在下面显示我的代码.这会影响我对应用商店的提交吗?当然,如果这是一个常见的事件,它是一个错误或有一个解决方案?如果可以查看提供的代码并发现错误或建议如何处理此内存警告,那将会很棒?

我的应用程序95%完成了此内存警告,所以它接近提交时间.

我的代码:

- (IBAction)takePhoto:(ID)sender {self.imagePicker = [[UIImagePickerController alloc] init];self.imagePicker.delegate = self;self.imagePicker.allowsEditing=NO;if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {     [self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];    [self presentVIEwController:self.imagePicker animated:YES completion:NulL];}else{    [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotolibrary];    [self presentVIEwController:self.imagePicker animated:YES completion:NulL]; }}- (IBAction)choosePhoto:(ID)sender {self.imagePicker2 = [[UIImagePickerController alloc] init];self.imagePicker2.delegate = self;self.imagePicker2.allowsEditing=NO;[self.imagePicker2 setSourceType:UIImagePickerControllerSourceTypePhotolibrary];[self presentVIEwController:self.imagePicker2 animated:YES completion:NulL];}-(voID) imagePickerController:(UIImagePickerController *)picker dIDFinishPickingMediawithInfo:(NSDictionary *)info{self.image = [info objectForKey:UIImagePickerControllerOriginalimage];CGRect rect = CGRectMake(0,100,100);UIGraphicsBeginImageContext( rect.size );[self.image drawInRect:rect];UIImage *picture1 = UIGraphicsGetimageFromCurrentimageContext();UIGraphicsEndImageContext();[self.snAPImage setimage:picture1];[self.uploadImageBtn setHIDden:NO];[self dismissVIEwControllerAnimated:YES completion:NulL];}-(voID)imagePickerControllerDIDCancel:(UIImagePickerController *)picker{[self dismissVIEwControllerAnimated:YES completion:NulL];}
解决方法 我没有找到一个好的解决方案,但我不会将原始图像存储在属性中,因为原始图像占用大约30MB的内存.所以代替:

self.image = [info objectForKey:UIImagePickerControllerOriginalimage];

我改成了:

UIImage * image = [info objectForKey:UIImagePickerControllerOriginalimage];

这样,图像在不再使用时会被破坏.注意:我在iPhone 4系列和5上测试了这种新方法.内存警告只出现在4系列而不是5系列上.

通过环顾网络,已经有很多关于Camera和iOS7的Apple报告提交给了Apple.例如,当您启动相机时会不定期地进行黑色预览 – 这与iOS7相关联,而iPhone 4系列则不是5.这可能是处理器功率的差异 – 但我不确定.我的应用程序获得了应用程序商店的批准,因此内存警告不会成为问题 –

总结

以上是内存溢出为你收集整理的ios – 使用UIImagePickerController时的内存警告全部内容,希望文章能够帮你解决ios – 使用UIImagePickerController时的内存警告所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1076666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存