使用GCD时,我们要等到两个异步块执行完毕后再继续执行下一步。最好的方法是什么? 我们尝试了以下操作,但似乎不起作用: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block2 }); // wait until both the block1 and block2 are done before start block3 // how to do that? dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block3 });
除了明显的区别: 使用enumerateObjectsUsingBlock时,你既需要索引和对象 enumerateObjectsUsingBlock当您需要修改局部变量时不要使用(我错了,请参见bbum的答案) 被enumerateObjectsUsingBlock普遍认为是好还是坏的时候for (id obj in myArray)也会工作?优点/缺点是什么(例如,或多或少的性能)?