我会承认,我在网上找到了这段代码 - 用它 - 并且热潮!我的表现有了很大提升。
我的代码如下:
使用Time Profiler,我发现becomeFirstResponder变得疯狂,在这里显示(它在createOrEditItem中):
所以我点击谷歌并改变它:
Time Profiler甚至没有将其显示为“热门”方法!
我的问题很简单,为什么?这里发生了什么技术魔力?
感谢。
答案 0 :(得分:1)
当您异步调度代码以在同一个线程上运行时(就像您在示例中所做的那样),您正在安排它在以下的runloop循环中运行。
它无法帮助提高性能,因为它会将代码从一个runloop循环转移到下一个循环,将工作负载分散到多个runloop循环中,使其看起来更平滑,更快速。如果你有来自dummyTextField
的副作用成为第一响应者,这也可以解释为什么它似乎更高效,因为副作用再次被推到下一个runloop周期。