慢UIViewController加载时间(慢ClientState警告)

时间:2013-01-13 03:26:13

标签: ios uiviewcontroller autolayout

自从我将旧应用转换为iOS 6后,我开始在控制台中收到以下消息。

WARNING: Slow defaults access for key ClientState took 0.023656 seconds, tolerance is 0.020000

除了将我的代码从iOS 5更新到iOS 6之外,我还切换到了自动布局。我运行了仪器/时间分析器,我的appDelegate中的rootViewController就是问题所在。每当我切换视图控制器时,它都会吸引大部分时间,(无论我是否必须实例化视图控制器或重新使用已存在的视图控制器)。

window.rootViewController = myViewController;

我知道这个方法表面上做了什么,但我不确定幕后会发生什么...现在会导致它变慢的速度以及我该怎样做才能加快速度呢?

编辑:我已经尝试将自己的故事板放在自动布局上,问题就消失了(当然我的UI布局是乱七八糟的)。所以明显的结论是,它是关于自动布局的。我可能只有不到70个视图,所有组合在屏幕上以及布局它们所需的各种约束。我很难相信自动布局要慢得多(从关闭自动布局的约80ms到打开自动布局的~1370ms)。

2 个答案:

答案 0 :(得分:3)

屏幕上有70个视图听起来很多!我的建议是以某种方式简化

  • 你真的需要同时收看所有70个观点吗?

  • 检查所有观看是否需要自动布局,尽可能将其删除

  • 某些视图可以替换为图形吗?我使用了视图,例如对于阴影,可能是图像

你能将storyBoard分成几个较小的例子吗?一个用于登录,详细信息,编辑模式等。部分缓慢可能来自系统必须处理(太)大故事板。

答案 1 :(得分:0)

考虑使用2个视图控制器创建一个新项目并测试切换速度。每个iOS应用程序都有一个窗口,一个根视图控制器和一个视图控制器。问题不太可能像你希望的那样狭隘和明确。每个视图控制器加载什么?你检查了底层代码吗? app delegate是否对初始化或更改根视图控制器做了什么?