gpt4 book ai didi

ios - 检查线程(使用 GCD)是否存在或已完成

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:21 26 4
gpt4 key购买 nike

我希望能够在他们登录后在后台从我们的服务器下载一些数据。有什么方法可以设置它以便当用户转到程序的那个部分时(比如说它的下载食谱) ,我可以检查是否有尚未保存的新食谱的当前下载?

如果用户转到食谱并看到某种指示器表明它当前正在下载新食谱,那就太好了。

我可以命名线程吗?我可以将所有“食谱”线程放入堆栈并检查它是否为空或是否有线程?

我正在使用 GCD。

有什么想法吗?

最佳答案

这是我在使用 GCD 时会做的事情(未经测试,但要吸取的教训是,当您的下载完成时,您可以使用 dispatch_group_notify 并结合全局标志来指示状态下载过程)。

-(void)downloadRecipes
{
//<--Start activity indicator-->
//isDownloading = YES; //<- Some global flag to indicate download in progress
//--or--
//[[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidBegin"];
dispatch_block_t executionBlock =
^{
//Your download logic here
};
dispatch_block_t executionBlock_OnComplete =
^{
//isDownloading = NO; //<- Global flag indicates no longer downloading
//--or--
//[[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidEnd"];
//<--Stop activity indicator-->
};
dispatch_queue_t someQueue = dispatch_queue_create("com.myapp.recipe.download", NULL);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, someQueue, executionBlock);
dispatch_group_notify(group, dispatch_get_main_queue(), executionBlock_OnComplete);
dispatch_release(group);
dispatch_release(queue);
}

可选地,您可以使用 NSNotificationCenter 在进程开始和完成时发布通知,而不是设置全局标志。

关于ios - 检查线程(使用 GCD)是否存在或已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15298254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com