所以基本上我需要能够在块运行完成后运行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锁定。这可能是从辅助线程调用UIKit的结果。现在崩溃......
我在哪里可以查看线程何时完成其脏工作以便我可以调用segue?
谢谢你们可爱的人。
PS:啤酒,ups和泰迪熊和鲜花给任何可以提供帮助的人<3。答案 0 :(得分:27)
您应该只在主线程上调用UI方法。尝试在主队列上调度performSegueWithIdentifier:
dispatch_async(jsonQueue, ^{
[self doSomeJSON];
dispatch_sync(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"modaltomenu" sender:self];
});
});
答案 1 :(得分:7)
dispatch_async(jsonQueue, ^{
[self doSomeJSON];
dispatch_async(dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"modaltomenu" sender:self];
//Finished with async block
});
});