[英]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.