【问题标题】:Reduce app memory footprint减少应用程序内存占用
【发布时间】:2016-11-09 12:40:57
【问题描述】:

我有一个非常重图像的应用程序。 (在你说:不,我不能减少图像的数量)。这意味着我的故事板文件中有很多 UIImageViews。

应用的整体结构是这样的:

Content View Controller 是图像重的一个,并且由于页面视图控制器的原因,在任何时候都可以有多达 12 个左右的图像在内存中。

我一直收到内存警告和泄漏(根据我的调查,这些是独立的不相关事件)并且系统有时会终止应用程序。

除了编写我自己的UIPageViewController 实现之外,我还能做些什么来减少内存占用?

【问题讨论】:

    标签: ios memory-management uiimage uipageviewcontroller


    【解决方案1】:

    我认为您不需要创建自己的UIPageViewController 实现,您只需要明智地使用UIPageViewControllerDelegate/DataSource 和UIViewController。
    例如UIViewController 有一个在内存警告期间触发的方法,您是否正在摆脱在该方法中不可见的 VC 上的重图像?

    【讨论】:

    • 还没有。我已经开始释放由UITableView 管理的视图控制器,只要它们不再可见。因此,任何时候内存中最多只能有 4 个视图控制器。
    • 还有。当触发内存警告时,如何最好地判断视图控制器是否可见?如果我删除所有重图像,它们会在控制器下一次可见时重新加载吗?
    • 检查您的图像是否被缓存或保留在某处。如果您使用 UIImage(named:) 加载它们,它们将被缓存,系统应在内存警告后释放它们。
    • 通常你检查视图控制器的视图是否有一个超级视图,但是页面 vc 更复杂,因为 dei 可以加载到屏幕外。如果您应用正确的业务逻辑,图像将被重新加载,可能现在您正在将它们加载到 viewDidLoad 中,这将被调用一次,请在 viewDidAppear 或 viewWiilAppear 中尝试
    • 它们只是由 UIStoryboard 类解码。 initWithDecoder:
    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多