我正在使用 mainQueueConcurrency 将 NSArrayController 绑定(bind)到 managedObjectContext。
我想要做的就是用我自己的函数修改排列对象的排序属性,然后调用 rearrangeObjects
然后选择一些对象。
但看起来 rearrangeObjects
没有同步执行。
那么我如何证明这一点,以一种方式或另一种方式?
这有效:
[self.myArrayController rearrangeObjects];
// Async needed -- I believe rearrange calls a fetch, which is async
dispatch_async(dispatch_get_main_queue(), ^{
[self.myArrayController setSelectedObjects:anArray];
});
减去
dispatch_async
,它不起作用。选择不会发生。我相当确信,就像 NSArrayController 上的
fetch
一样,rearrangeObjects
会在下一次运行循环迭代中自行调度。** 那么我该如何证明呢?我可以在那里设置断点并检查阵列 Controller 等。我有,我怀疑这就是正在发生的事情。但是是否有一些调试技巧可以使“Eureka!这行代码启动异步操作”变得明显?
** 是 cocoa 绑定(bind)在异步执行某些操作。当然。重新排列对象只是触发它。
最佳答案
通过在可疑代码行之前中断并在 GCD dispatch_async 函数上启用 符号断点,我能够捕获调用 rearrangeObjects
(通过绑定(bind))的 dispatch_async_f
:
而且,果然,dispatch_async_f
符号断点停在 rearrangeObjects
行:
关于objective-c - 如何确定 Apple 方法是否是异步的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23773827/