我的应用程序在同步过程中自动关闭,无论何时必须下载大量图像。
它与模拟器完美搭配,但是当我在设备上运行时,它会在下载少量图像后关闭,因为内存问题而终止#34;在控制台中发出警告。
如果我减少要下载的图像数量,它可以在设备上正常工作。
有什么建议吗?
答案 0 :(得分:2)
由于内存问题,可能会发生这些情况。你的模拟器在mac PC上运行。所以app可以轻松运行而不会出现内存问题但由于其内存,设备无法处理此问题。
根据你的情况,你的任务很艰巨。
NSURLSessionDownloadTask
"show the debug navigator (left side) and check Memory and Energy Impact"
。现在运行应用程序并执行相同的操作。这将帮助您识别应用程序内存和使用的能源。Instruments
可以帮助您监控应用程序崩溃的位置。"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"))