7

自从我将旧应用程序转换为 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我的 appDelegate 是问题所在。每次我切换视图控制器时,它都会占用大部分时间(无论我是否必须实例化视图控制器或重新使用已经存在的视图控制器)。

window.rootViewController = myViewController;

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

编辑:我试过把我的故事板从自动布局中去掉,问题就消失了(当然我的 UI 布局一团糟)。所以显而易见的结论是,它是关于自动布局的。我可能在屏幕上组合了不到 70 个视图,以及布置它们所需的各种约束。我很难相信自动布局会慢得多(从关闭自动布局的 ~80ms 到打开自动布局的 ~1370ms)。

4

2 回答 2

3

在屏幕上拥有 70 次观看听起来很多!我的建议是以某种方式使其更简单:

  • 您真的需要同时查看所有 70 个视图吗?

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

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

您能否将storyBoard 拆分为几个较小的部分,例如用于登录、详细信息、编辑模式等的一个。部分缓慢可能来自系统必须处理(太大)大storyBoard。

于 2013-01-14T11:33:06.747 回答
0

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

于 2013-01-13T03:44:24.120 回答