自从我将旧应用转换为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)。
答案 0 :(得分:3)
屏幕上有70个视图听起来很多!我的建议是以某种方式简化:
你真的需要同时收看所有70个观点吗?
检查所有观看是否需要自动布局,尽可能将其删除
你能将storyBoard分成几个较小的例子吗?一个用于登录,详细信息,编辑模式等。部分缓慢可能来自系统必须处理(太)大故事板。
答案 1 :(得分:0)
考虑使用2个视图控制器创建一个新项目并测试切换速度。每个iOS应用程序都有一个窗口,一个根视图控制器和一个视图控制器。问题不太可能像你希望的那样狭隘和明确。每个视图控制器加载什么?你检查了底层代码吗? app delegate是否对初始化或更改根视图控制器做了什么?