自从我将一个旧应用程序转换为 iOS 6 后,我开始在我的控制台中收到以下消息。
警告:对关键 ClientState 的慢速默认访问花费了 0.023656 秒,容差为 0.020000
除了将我的代码从 iOS 5 更新到 iOS 6 之外,我还切换到了自动布局。我运行了 Instruments/Time Profiler,我的 appDelegate 中的 rootViewController
是问题所在。每次我切换 View Controller 时,它都会占用大量时间(无论我是否必须实例化 View Controller 或重新使用已经存在的 View Controller )。
window.rootViewController = myViewController;
我知道该方法表面上做了什么,但我不确定幕后发生了什么......什么会导致它现在变慢,我可以做些什么来加快它的速度?
编辑:我试过让我的 Storyboard 脱离自动布局,问题就消失了(当然我的 UI 布局一团糟)。所以显而易见的结论是,它与自动布局有关。我可能只有不到 70 个 View 全部组合在屏幕上,以及布置它们所需的各种限制。我很难相信自动布局会慢得多(从关闭自动布局时的约 80 毫秒到打开自动布局时的约 1370 毫秒)。
最佳答案
在屏幕上有 70 次观看次数听起来很多!我的建议是以某种方式使其更简单:
您真的需要同时查看所有 70 个 View 吗?
检查是否所有 View 都需要自动布局,尽可能将其移除
- 某些 View 可以用图形代替吗?我使用过 View ,例如对于阴影,可能是图像
你能把 storyBoard 分成几个小的吗?一个用于登录、详细信息、编辑模式等。部分缓慢可能来自系统必须处理(太)大的 Storyboard。
关于ios - 缓慢的 UIViewController 加载时间(缓慢的 ClientState 警告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14300381/