iPad的,之间viewWillAppear中,并查看屏幕上出现的iOS6的很长的延时(iPad,

2019-08-18 02:27发布

我有一个基于相当复杂的故事板的iPad应用程序的工作。 我的工作流程如下集合视图推动另一种观点认为,该模态呈现另一种看法。

这是模态呈现的第三观点是相当复杂的,并且具有19子视图,它们中的一些图像视图。 该应用程序做了很多组织内viewDidLoad中的视图层次。 有内viewWillAppear中或viewDidAppear没有别的。

让我困扰的是,如果我把记录中viewDidLoad中陈述,我看到viewDidLoad中用户发起故事板赛格瑞的1.5秒内完成。 然后viewWillAppear中被调用。 在此之后,屏幕正坐在那里某处80之间的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次后的分配分析。

这是一个内存释放问题?

Answer 1:

概要分析的应用程序后,我想通了,两个问题在起作用:

1)我节省大量UIImages作为binarydata到coredata,如果使用NSFetchedResultsControllers,这不应该做的,因为他们拿出所有的图像数据,并保存在内存中。

2)iOS6的改变viewDidUnload的工作方式 - 它永远不会被调用,所以我加了几个电话手动释放对象时,我的视图控制器消失。

最终的结果是,内存占用大约4MB基线现在,越来越高,我推了以前得罪控制器。 另外,我可以推/弹出CONTROLER多张次无出内存崩溃。



文章来源: iPad, iOS6 very long delay between viewWIllAppear and view appearing on the screen