基本上,我需要在块执行完毕后运行segue。我有一个执行一些JSON操作的块,我需要知道何时块已经完成运行。
我有一个队列,我称之为json_queue。
我现在有一个dispatch_async块,语法如下:
我有一个队列,我称之为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 线程以外的线程获取网络锁。这可能是从辅助线程调用 UIKit 的结果。现在崩溃了...
我应该在哪里检查线程是否完成了它的工作,以便可以调用 segue?
谢谢可爱的人们。
附注:啤酒、UPS、泰迪熊和花朵将送给能够提供帮助的人 <3。
dispatch_sync
而不是dispatch_async
在这种情况下会更好(我已经进行了编辑)。这种模式在 WWDC2010 Session 206 视频中被推荐使用。 @ranReloaded 使用另一个 block 更方便,因为你不需要为这个简单的任务创建全新的方法,并且更棒的是,你可以访问块定义范围内的每个变量。 - Johnnywho