ios - 显示大图像文件时在 viewDidAppear 之后调用 DidRecieveMemoryWarning

标签 ios objective-c xcode uiimageview nsdata

当我加载特定页面时,我的应用程序由于内存压力而终止。我正在使用 NSURLRequest 获取数据并加载图像。我在我的代码中放置了断点,并在 viewDidAppear 之后跟踪第一个 didRecieveMemoryWarning 调用。这是我用来加载图像的代码:

NSError *error = nil;
NSURLResponse *response = nil;
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:self.img]];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
UIImage *img = [[UIImage alloc] initWithData:data];
self.ImgView.image = img;
[self.scrollView addSubview:self.ImgView];

关于我收集的数据的一些事实:

  1. 在线图片为 5,184px × 3,456px(缩放为 1,008px × 672px)
  2. 我将图像放入 320 x 320 的 UIImageView
  3. NSData对象数据为5,360,785字节

如何解决这个问题?是应用程序无法处理数据,还是 imageView 无法缩放图像?图像出现在屏幕上,但应用程序在屏幕加载后有点崩溃,无论您是停留在该页面还是离开该页面。

最佳答案

尝试在 View 加载后加载图像,然后再分配给 imageview 将图像缩小一点。这样可以避免内存警告。

引用:NSData to UIImage

调整图像大小: How to scale down a UIImage and make it crispy / sharp at the same time instead of blurry?

关于ios - 显示大图像文件时在 viewDidAppear 之后调用 DidRecieveMemoryWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338414/

相关文章:

objective-c - 使用Core Graphics制作笔刷般的纹理

ios - 淡出披露指示符

c++ - xCode 和 C++ 数组。这怎么可能?在 C++ 中声明一个没有大小的数组

ios - 防止 iAd 转移其他 View

iOS比较标签的值(value)

iphone - OCUnit 和 OCMock 在 iPhone SDK 上工作吗?

iphone - 象征性崩溃发生了什么? (来自 Xcode 3.2.3 的 MIA)

ios - 每个 UICollectionViewCell 的 UICollectionView 不同的 segue

ios - 应用程序安装时运行方法

ios - 如何在静态函数中使用 UITapGestureRecognizer 向标签添加点击功能