我正在使用一个相当复杂的基于故事板的 iPad 应用程序。我的工作流程如下一个集合视图推送另一个视图,它以模态方式呈现另一个视图。
模态呈现的第三个视图相当复杂,有 19 个子视图,其中一些是图像视图。该应用程序在 viewDidLoad 中组织视图层次结构方面做了很多工作。viewWillAppear 或 viewDidAppear 中没有其他内容。
困扰我的是,如果我将日志记录语句放在 viewDidLoad 中,我会看到 viewDidLoad 在用户启动故事板 segue 后的 1.5 秒内完成。然后调用 viewWillAppear。之后,屏幕会在那里停留 3 到 80 秒(是的,八十秒!)。有时视图显示相对较快,有时则需要很长时间。
这是我的 viewDidLoad 占用太多内存的症状吗?换句话说,延迟是因为iOS清理了足够的内存以使我的视图出现吗?
在 xCode 中点击停止按钮后,我重新启动应用程序,执行一系列步骤以呈现视图控制器,这是第一次运行:
/
/80 seconds!
2013-03-27 22:56:30.311 iconmaker[2076:907] -[GLFirstViewController viewWillAppear:] [Line 597] viewWillAppear
2013-03-27 22:57:50.351 iconmaker[2076:907] -[GLFirstViewController viewDidAppear:] [Line 604] viewDidAppear
//after popping the view controller and repeating:
//less than 2 seconds
2013-03-27 22:59:23.698 iconmaker[2076:907] -[GLFirstViewController viewWillAppear:] [Line 597] viewWillAppear
2013-03-27 22:59:24.306 iconmaker[2076:907] -[GLFirstViewController viewDidAppear:] [Line 604] viewDidAppear
更新:关闭设备,然后重新启动后,视图控制器显示非常快,第一次运行不到 2 秒。这是推送/弹出控制器 4 次后的分配分析。
这是内存释放问题吗?