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

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

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

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

 window.rootViewController = myViewController; 

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

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

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

  • 你真的需要同时获得所有70个观看次数吗?

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

  • 有些观点可以被图形取代吗? 我使用了视图,例如阴影,可能是图像

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

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