7

所以基本上我需要能够在一个块完成运行后运行一个segue。我有一个块可以做一些 JSON 的东西,我需要知道它什么时候完成运行。

我有一个名为 json_queue 的队列。

jsonQueue = dispatch_queue_create("com.jaboston.jsonQueue", NULL);

然后我有一个具有以下语法的 dispatch_async 块:

  dispatch_async(jsonQueue, ^{
  [self doSomeJSON];
  [self performSegueWithIdentifier:@"modaltomenu" sender:self];
  });

它不会让我执行以下命令:“[self performSegueWithIdentifier:@"modaltomenu" sender:self];"

试图从除主线程或 web 线程之外的线程获取 web lock。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...

我在哪里可以查看线程何时完成了它的脏活,以便我可以调用 segue?

谢谢可爱的人。

PS:啤酒和UPS以及泰迪熊和鲜花给任何可以帮助的人<3。

4

2 回答 2

27

您应该只在主线程上调用 UI 方法。尝试在主队列上调度 performSegueWithIdentifier:

dispatch_async(jsonQueue, ^{
    [self doSomeJSON];
    dispatch_sync(dispatch_get_main_queue(), ^{
        [self performSegueWithIdentifier:@"modaltomenu" sender:self];
    });
});
于 2012-07-18T22:10:41.460 回答
7
    dispatch_async(jsonQueue, ^{
        [self doSomeJSON];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self performSegueWithIdentifier:@"modaltomenu" sender:self];
           //Finished with async block

        });
    });
于 2012-07-18T22:07:01.197 回答