簡體   English   中英

如何確定Apple方法是否異步?

[英]How can I determine if Apple methods are asynchronous?

我正在使用mainQueueConcurrency將NSArrayController綁定到managedObjectContext。

我想做的就是用自己的函數修改arrangeObjects的排序屬性,然后調用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會在下一次runloop迭代中調度自己。 **那么我該如何證明呢? 我可以在那里拋出斷點並檢查陣列控制器等等。我有,我懷疑這是發生了什么。

但是有一些調試技巧會讓它顯而易見“Eureka!這行代碼啟動異步操作”??

**正在做異步的可可綁定。 當然。 rearrangeObjects只是觸發它。

我能夠通過在可疑的代碼行之前斷開並在GCD dispatch_async函數上啟用符號斷點來捕獲rearrangeObjects調用dispatch_async_f (通過綁定)

dispatch_async上的符號斷點*

並且,果然, dispatch_async_f符號斷點在rearrangeObjects行上停止:

在重排對象上激活斷點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM