ios - 将高分辨率图像设置为 UIimageView 创建内存问题

标签 ios iphone memory-management uiimageview

我的应用有两个屏幕。我将 UIImage 对象从第一个屏幕发送到第二个屏幕,并将此图像设置为第二个屏幕中的 UIImageview

但是当我尝试在 UIImageview 中设置图像时,我的内存峰值达到了 116。我的图像分辨率高于 2040*2040

这是我的代码

.h 文件

@property (weak, nonatomic) IBOutlet UIImageView *aimageView;
@property (weak, nonatomic) UIImage *sourceImage;

.m 文件

- (void)viewDidLoad
{
    [super viewDidLoad];

    aimageView.image = sourceImage;
    [aimageView setContentMode:UIViewContentModeScaleAspectFit];
    sourceImage = nil;
}

最佳答案

当图像在内存中解压缩时,它会占用大量内存。

如果您正在为 iPhone 开发,最大屏幕分辨率为 640x1136 那么为什么您需要一次加载 2040x2040 图像?

如果您需要在您的应用程序中有效地处理大图像,可能值得考虑使用 CATiledLayer。这将允许您将大图像拆分为较小的图像图 block ,然后仅加载用户希望在屏幕上看到的图 block 。

Apple 有一个示例项目,您可以找到here .

关于ios - 将高分辨率图像设置为 UIimageView 创建内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753378/

相关文章:

ios - 本地化 Storyboard的修改 - 转换为基础 Storyboard

ios - 使用 Swift 在特定坐标中旋转 AnnotationView

iphone - 在导航 Controller 上显示工具栏按钮

iphone - 制作自定义用户界面

iphone - 如果带有文本框的语句不起作用

c - 在 C 中分配内存有没有比 malloc/calloc 更好的实现?

iphone - 用于异步下载和上传的 iOS 任务完成模式

ios - parsequery 正在为所有 uitableviewcells 设置一个图像

c++ - 从指针 vector 中删除元素

delphi - 在 Delphi 中使用单个函数释放内存和 nil