簡體   English   中英

等待帶有完成塊的方法在快速枚舉塊內完成

[英]Wait for method with completion block to finish inside fast enumeration block

我知道我可以使用帶有遞增變量的for循環迭代,然后在成功時將其遞增,但是由於塊更快,所以我希望理想地使用它們。 for循環內的方法在后台處理,並創建線程和套接字,從而減慢了速度,因此我想等它完成后再移至下一個。 這是下面的代碼。

    for (NSString *uuid in file_assets) {
        if (![asset_model isFileUploaded:uuid]) {
            [self uploadFileAssetWithUUID:uuid :^(BOOL success){

                if (success) {
                    NSLog(@"Upload finished..");
                }

            }];
        }
    }

如何在塊內通信以移動下一個迭代?

不要等待,也不想等待。 隊列。 使用NSOperationQueue創建所有上載並控制有多少並發運行。 如果您嘗試讓循環等待,那么您認為正在獲得的任何速度優勢都會失效,並有可能阻塞主線程。

為此使用調度隊列。 我認為它可以滿足您的需求

dispatch_queue_t exampleQueue = dispatch_queue_create( "NewQueue", NULL );
dispatch_async(exampleQueue, ^{
// do your upload....

dispatch_queue_t queue=dispatch_get_main_queue();
dispatch_async(queue, ^{

do your update after upload

});
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM