要跟进和改进iCoder的答案,您可以而且应该执行以下操作。
dispatch_queue_t serialQueue = dispatch_queue_create("com.unique.name.queue", DISPATCH_QUEUE_SERIAL);
dispatch_async(serialQueue, ^{
[self ReadAllImagesFromPhotosLibrary];
});
dispatch_async(serialQueue, ^{
[self WriteFewImagestoDirectory];
});
dispatch_async(serialQueue, ^{
[self GettingBackAllImagesFromFolder];
});
dispatch_async(serialQueue, ^{
[self MoveToNextView];
});
尽管上述调用是async,但它们将作为DISPATCH_QUEUE_SERIAL状态排队并串行运行。sync和async之间的区别在于,使用sync,您的代码将在运行以下代码之前暂停并等待块回答,因此如果执行时间很长,则可能会冻结您的 UI。而使用异步,代码运行并异步返回块。
但是,由于 GCD(Grand Central Dispatch),您存储在DISPATCH_QUEUE_SERIAL中的任务将等待并按照它们添加的顺序一个接一个地执行。