【发布时间】:2014-05-29 11:31:31
【问题描述】:
在我的应用程序中,我有一个类别列表,其中包含一个对象数组的属性。 NSTreeController 的 content 属性绑定到当前类别的那个数组。这些类别在一个列表中,用户可以从中选择一个。所选类别存储在数组控制器绑定到的窗口控制器的属性中。这一切都很好。
但是,当用户切换类别时,数组控制器会得到一个新的内容数组,这个过程比较慢。阵列中有大约 12000 个对象,大约需要 3 秒。加载时间直接取决于对象的数量。数组中的越少,这个过程就越快。作为侧节点,数组中的对象是从 CoreData 加载的。
显然,数组控制器正在对每个对象做一些事情。在此期间中断执行总是以一些 objc_msgSend() 调用结束。我需要找出它实际上在做什么,所以我可以解决这个问题。我只是不知道怎么做。
我尝试了 Time Profiler 来查看发生了什么,但深入调用堆栈并没有多大帮助。您会深入嵌套消息,每条消息都需要一些时间,最后没有一点可以说就是这样。
还有其他想法吗?
【问题讨论】:
标签: cocoa core-data nsarraycontroller