app由于内存问题而关闭

时间:2017-07-22 07:03:19

标签: ios objective-c memory

我的应用程序在同步过程中自动关闭,无论何时必须下载大量图像。

它与模拟器完美搭配,但是当我在设备上运行时,它会在下载少量图像后关闭,因为内存问题而终止#34;在控制台中发出警告。

如果我减少要下载的图像数量,它可以在设备上正常工作。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

由于内存问题,可能会发生这些情况。你的模拟器在mac PC上运行。所以app可以轻松运行而不会出现内存问题但由于其内存,设备无法处理此问题。

根据你的情况,你的任务很艰巨。

  1. 主要内容是,您必须在异步后台线程中运行下载任务。使用NSURLSessionDownloadTask
  2. 尝试降低原始质量图像,以便您可以更快地实现。
  3. 转到Xcode并选择"show the debug navigator (left side) and check Memory and Energy Impact"。现在运行应用程序并执行相同的操作。这将帮助您识别应用程序内存和使用的能源。
  4. Instruments可以帮助您监控应用程序崩溃的位置。
  5. 检查您将在"Windows->Devices->Select your device on left side -> View Device Logs"中获得的崩溃报告,然后选择应用的最新崩溃日志。

答案 1 :(得分:0)

如果您要将下载的图像存储在内存中,最终会耗尽内存。

也许更好的方法是缓存下载的每个图像,而不是将所有图像保存在内存中。

有一些图书馆可以帮助你解决这个问题,

Objective-C:https://github.com/rs/SDWebImage https://github.com/path/FastImageCache斯威夫特:https://github.com/Haneke/HanekeSwift

答案 2 :(得分:0)

在模拟器中,它有足够的内存来存储数据并使用计算机的速度。所以你没有遇到任何问题。当你试图在Device中做同样的事情时,它的空间非常有限。

图像下载过程与大量内存和进程相同。我们每次都有很多机会下载图片。您需要将图像存储到catch内存中,第二次需要从中检索。

您可以使用SDWebImage

<强>目标-C:

    #import <SDWebImage/UIImageView+WebCache.h>
    ...
    [imageView sd_setImageWithURL:[NSURL URLWithString:@"imagepath"]
                 placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

<强>夫特:

import SDWebImage

imageView.sd_setImage(with: URL(string: "imagepath"), placeholderImage: UIImage(named: "placeholder.png"))