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 がフリーズする可能性があることです。一方asyncでは、コードが実行され、ブロックが非同期的に返されます。
ただし、GCD (Grand Central Dispatch) のおかげで、DISPATCH_QUEUE_SERIALに保存したタスクは待機し、追加された順序で次々に実行されます。