NSManagedObjectContext内的dispatch_async(dispatch_get_main_queue()

oo

我想做的是在后台线程上创建异步核心数据任务,以免占用主线程,但我也想在工作完成后进行主线程工作...

这是我的任务

  -(void)doTaskwithCompletion:(coreDataCompletion)complete
  {
    [self.backgroundManagedObjectContext performBlock:^{

        // do my BG core data task

        [self saveContext:self.backgroundManagedObjectContext];
        complete(YES);

    }];
   }

这是我的阻止方法

            [[MYCoreDataManager sharedInstance]doTaskwithCompletion:^(BOOL complete) {

                if (complete == YES) {

                    dispatch_async(dispatch_get_main_queue(), ^{

                         // back to the main thread                            
                    });
                }

            }];

某件事告诉我这是错误的……但是一旦块完成,我就找不到其他方法将自己重新放置在主线程上……通知似乎太笨拙了。

我简单地说,我的问题是,我可以打电话想dispatch_async(dispatch_get_main_queue()里面moc performBlock:^

本质上

  -(void)doTaskwithCompletion:(coreDataCompletion)complete
  {
    [self.backgroundManagedObjectContext performBlock:^{

        // do my BG core data task

        [self saveContext:self.backgroundManagedObjectContext];
        dispatch_async(dispatch_get_main_queue(), ^{

           // back to the main thread    

        });

    }];
   }
迈克尔·沃兹涅森斯基

“简而言之,我的问题是我可以在moc performBlock:^内调用dispatch_async(dispatch_get_main_queue()吗?”?

答案是肯定的!实际上,当您从主线程调用performBlock时,您正在做相反的事情,对吗?这是iOS的常见功能。一种更清洁的方法可能是通过一个完成,然后在该完成中调用main ...

现在,您有:

dispatch_async(dispatch_get_main_queue(), ^{

       // back to the main thread  
       completion()



    });

您还可以编写:

-(void)doTaskwithCompletion:(coreDataCompletion)complete
{
[self.backgroundManagedObjectContext performBlock:^{

    // do my BG core data task

    [self saveContext:self.backgroundManagedObjectContext];
    complete()

}];
}

其中complete具有对主线程的调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS:dispatch_async(dispatch_get_main_queue())

来自分类Dev

了解ios UIView动画块和dispatch_async(dispatch_get_main_queue)块

来自分类Dev

为什么从不调用dispatch_async(dispatch_get_main_queue()之后的块?

来自分类Dev

使用dispatch_async + dispatch_get_main_queue进行UI更新有什么意义?

来自分类Dev

了解ios UIView动画块和dispatch_async(dispatch_get_main_queue)块

来自分类Dev

在 dispatch_async 队列中的弱自我(dispatch_get_main_queue(),^{})

来自分类Dev

直接执行方法与在dispatch_async(dispatch_get_main_queue(),^ {})块中有什么区别

来自分类Dev

当dispatch_async(dispatch_get_main_queue())运行时如何从类方法发送信息

来自分类Dev

直接执行方法与在dispatch_async(dispatch_get_main_queue(),^ {})块中有什么区别

来自分类Dev

dispatch_async(dispatch_get_main_queue()在iPad上不起作用,但在iPhone上起作用

来自分类Dev

何时使用dispatch_get_main_queue

来自分类Dev

何时使用dispatch_get_main_queue

来自分类Dev

WKWebView的网页未显示dispatch_get_main_queue内的页面

来自分类Dev

主线程中的dispatch_get_main_queue()

来自分类Dev

重用dispatch_get_main_queue()/ dispatch_get_global_queue()的结果是否安全?

来自分类Dev

用户在执行dispatch_get_main_queue()之前离开当前视图

来自分类Dev

dispatch_get_main_queue()不能顺利运行新的异步作业

来自分类Dev

我在哪里需要在main_queue上使用dispatch_async?

来自分类Dev

Swift:致命错误:在dispatch_async dispatch_get_global_queue中解开可选值时意外发现nil

来自分类Dev

Using dispatch_async with self

来自分类Dev

如何使dispatch_async运行

来自分类Dev

从oneViewController移至另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

来自分类Dev

从oneViewController移到另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

来自分类Dev

dispatch_async尚未完成

来自分类Dev

在dispatch_async中调用委托方法

来自分类Dev

未调用dispatch_async块

来自分类Dev

使用dispatch_async并行搜索

来自分类Dev

Swift:从dispatch_async内部返回结果

来自分类Dev

无需回调的OCMock for dispatch_async

Related 相关文章

  1. 1

    iOS:dispatch_async(dispatch_get_main_queue())

  2. 2

    了解ios UIView动画块和dispatch_async(dispatch_get_main_queue)块

  3. 3

    为什么从不调用dispatch_async(dispatch_get_main_queue()之后的块?

  4. 4

    使用dispatch_async + dispatch_get_main_queue进行UI更新有什么意义?

  5. 5

    了解ios UIView动画块和dispatch_async(dispatch_get_main_queue)块

  6. 6

    在 dispatch_async 队列中的弱自我(dispatch_get_main_queue(),^{})

  7. 7

    直接执行方法与在dispatch_async(dispatch_get_main_queue(),^ {})块中有什么区别

  8. 8

    当dispatch_async(dispatch_get_main_queue())运行时如何从类方法发送信息

  9. 9

    直接执行方法与在dispatch_async(dispatch_get_main_queue(),^ {})块中有什么区别

  10. 10

    dispatch_async(dispatch_get_main_queue()在iPad上不起作用,但在iPhone上起作用

  11. 11

    何时使用dispatch_get_main_queue

  12. 12

    何时使用dispatch_get_main_queue

  13. 13

    WKWebView的网页未显示dispatch_get_main_queue内的页面

  14. 14

    主线程中的dispatch_get_main_queue()

  15. 15

    重用dispatch_get_main_queue()/ dispatch_get_global_queue()的结果是否安全?

  16. 16

    用户在执行dispatch_get_main_queue()之前离开当前视图

  17. 17

    dispatch_get_main_queue()不能顺利运行新的异步作业

  18. 18

    我在哪里需要在main_queue上使用dispatch_async?

  19. 19

    Swift:致命错误:在dispatch_async dispatch_get_global_queue中解开可选值时意外发现nil

  20. 20

    Using dispatch_async with self

  21. 21

    如何使dispatch_async运行

  22. 22

    从oneViewController移至另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

  23. 23

    从oneViewController移到另一个ViewController并再次返回时,dispatch_get_main_queue()不会更新UI

  24. 24

    dispatch_async尚未完成

  25. 25

    在dispatch_async中调用委托方法

  26. 26

    未调用dispatch_async块

  27. 27

    使用dispatch_async并行搜索

  28. 28

    Swift:从dispatch_async内部返回结果

  29. 29

    无需回调的OCMock for dispatch_async

热门标签

归档