我阅读了Apple文档,了解如何使用串行队列来确保以可预测的顺序执行任务,但现在我很困惑.
有些我如何能够连续工作,但仍然我不清楚,所以我需要简单的序列示例我的方法来连续执行.
有些我如何能够连续工作,但仍然我不清楚,所以我需要简单的序列示例我的方法来连续执行.
我将我的功能分成4部分,现在希望它们能够连续执行
[self ReadAllImagesFromPhotosLibrary]; [self WriteFewImagestoDirectory]; [self GettingBackAllImagesFromFolder]; [self MoveToNextView];
解决方法
为了跟进和改进
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]; });
尽管上述调用是异步的,但它们将按照DISPATCH_QUEUE_SERIAL的状态排队并连续运行.同步和异步之间的区别在于,通过同步,您的代码将在运行以下代码之前暂停并等待块答案,因此如果执行时间长,可能会冻结您的UI.而使用异步,代码运行,块被异步返回.
但是,由于GCD(Grand Central Dispatch),您存储在DISPATCH_QUEUE_SERIAL中的任务将按照添加的顺序等待并执行.