【发布时间】:2013-01-13 03:26:13
【问题描述】:
自从我将旧应用程序转换为 iOS 6 后,我的控制台中开始出现以下消息。
WARNING: Slow defaults access for key ClientState took 0.023656 seconds, tolerance is 0.020000
除了将我的代码从 iOS 5 更新到 iOS 6 之外,我还切换到了自动布局。我已经运行了 Instruments/Time Profiler,而我的 appDelegate 中的 rootViewController 是问题所在。每次我切换视图控制器时,它都会占用大部分时间,(无论我是否必须实例化视图控制器或重新使用已经存在的视图控制器)。
window.rootViewController = myViewController;
我知道该方法表面上做了什么,但我不确定在幕后会发生什么......现在什么会导致它变慢,我可以做些什么来加快它的速度?
编辑:我尝试将我的情节提要关闭自动布局并且问题消失了(当然我的 UI 布局一团糟)。所以显而易见的结论是,它是关于自动布局的。我可能在屏幕上组合了不到 70 个视图,以及布置它们所需的各种约束。我很难相信自动布局会慢得多(从关闭自动布局的 ~80ms 到打开自动布局的 ~1370ms)。
【问题讨论】:
-
奇怪的警告以前从未见过,但你使用 Core Data 吗?
-
不。只有一个故事板上的几个相当复杂的视图控制器和一些我序列化的数据对象类。由于在应用程序运行的整个过程中,所有数据(并不多)都需要保留在内存中,Core Data 似乎有点过头了。
-
@Peter 可能是,但它没有真正的答案,所以我想我会尝试更具体的问题细节。
标签: ios uiviewcontroller autolayout