内存优化 ios 应用程序,在将应用程序推送到后台最小化应用程序运行时内存大小时

Posted

技术标签:

【中文标题】内存优化 ios 应用程序,在将应用程序推送到后台最小化应用程序运行时内存大小时【英文标题】:Memory optimization ios app, On Pushing app to background minimizing the app runtime memroy size 【发布时间】:2016-12-05 14:26:36 【问题描述】:

我正在开发大型 ios 应用程序。在这里,我在每个视图控制器中使用了大量动画,因此有时应用程序会因内存而崩溃。

问题描述如下

Pushing View Controller,点击按钮,启动UIImage 10 个图像的动画。这将应用程序内存使用量从 13MB 增加到 53MB(在 Xcode 8.1 和 iPhone 5 的 iOS 10.1 中检查“调试导航器”)。 弹出视图控制器时不会减小内存大小。

但如果我同时将应用程序发送到后台,那么它会将内存显着减少到 17MB。

请您指导我,我需要如何处理这种情况。

注意: - 两个对象(ViewController 和图像对象)都调用了它的dealloc 方法,所以意味着它们应该释放内存。 - 我什至尝试过@autorelease pool,但没有帮助。

提前致谢

【问题讨论】:

您需要使用不同的方法,不会将所有解码的图像数据同时加载到内存中。在此处查看示例:***.com/a/13850242/763355 【参考方案1】:

可能是你没有播放这个动画,在 viewWillDisappear 上尝试调用 stopAnimating(如果您使用 UIImageView 进行帧动画)。

【讨论】:

嗨,谢谢。我已经尝试过停止动画,甚至调用 imageview 的弹出 dealloc 方法,因为我将 UIImageView 类子类化并在 dealloc 方法下写入 nslog。这里的主要问题是,图像的总大小约为 2MB,当我加载这些图像以将数组分配给 UIImageView 时,应用程序大小急剧增加了 40MB。您能否指导一下我如何以优化的方式向您提供图像?

以上是关于内存优化 ios 应用程序,在将应用程序推送到后台最小化应用程序运行时内存大小时的主要内容,如果未能解决你的问题,请参考以下文章

将应用程序推送到后台时,NSManagedObjectContext 不会获取或保存对象

将数据推送到数组中,但在将时间戳转换为日期之后

将 Rails 应用程序推送到 Heroku 时出现啥错误

在将元素推送到 HTML ID 时更新实时 JavaScript 数组

UIPopovercontroller 在将新的视图控制器推送到 navccontroller 后调整大小

如何在将数据推送到导航堆栈之前将数据传递给视图控制器并加载它?