ios – 为什么我的UIImage占用了这么多内存?

ios – 为什么我的UIImage占用了这么多内存?,第1张

概述我有一个UI Image,我正在加载到我的应用程序的一个视图中.它是一个10.7 MB的图像,但当它在应用程序中加载时,应用程序的资源使用量突然增加50 MB.为什么这样做?不应该使用的内存仅增加约10.7MB?我确信加载图像是导致内存使用量跳跃的原因,因为我尝试将这些行注释掉,内存使用量回到8 MB左右.这是我加载图像的方式: UIImage *image = [UIImage imageNam 我有一个UI Image,我正在加载到我的应用程序的一个视图中.它是一个10.7 MB的图像,但当它在应用程序中加载时,应用程序的资源使用量突然增加50 MB.为什么这样做?不应该使用的内存仅增加约10.7MB?我确信加载图像是导致内存使用量跳跃的原因,因为我尝试将这些行注释掉,内存使用量回到8 MB左右.这是我加载图像的方式:
UIImage *image = [UIImage imagenamed:@"background.jpg"];self.backgroundImageVIEw = [[UIImageVIEw alloc] initWithImage:image];[self.vIEw addSubvIEw:self.backgroundImageVIEw];

如果没有办法减少这个图像使用的内存,有没有办法强制它在我想要它时解除分配?我正在使用ARC.

解决方法 正如@rckoenes所说
不要显示高文件大小的图像.
您需要在显示图像之前调整图像大小.
UIImage *image = [UIImage imagenamed:@"background.jpg"];self.backgroundImageVIEw =[self imageWithImage:display scaledToSize:CGSizeMake(20,20)];//Give your CGSize of the UIImageVIEw.[self.vIEw addSubvIEw:self.backgroundImageVIEw];-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {    //UIGraphicsBeginImageContext(newSize);    // In next line,pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).    // Pass 1.0 to force exact pixel size.    UIGraphicsBeginImageContextWithOptions(newSize,NO,0.0);    [image drawInRect:CGRectMake(0,newSize.wIDth,newSize.height)];    UIImage *newImage = UIGraphicsGetimageFromCurrentimageContext();    UIGraphicsEndImageContext();    return newImage;}
总结

以上是内存溢出为你收集整理的ios – 为什么我的UIImage占用了这么多内存?全部内容,希望文章能够帮你解决ios – 为什么我的UIImage占用了这么多内存?所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1102623.html

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

发表评论

登录后才能评论

评论列表(0条)

保存