当前位置: 首页 > news >正文

用商标做网站名字个人做公司网站

用商标做网站名字,个人做公司网站,高校教学网站建设,用自己的手机做网站block 等待 在 iOS 开发中#xff0c;如果你想要一个 block#xff08;闭包#xff09;等待执行完成#xff0c;通常意味着你想要同步地执行这个 block#xff0c;而不是异步地。然而#xff0c;block 本身并不直接支持同步等待#xff0c;因为它们是作为函数对象来设计… block 等待 在 iOS 开发中如果你想要一个 block闭包等待执行完成通常意味着你想要同步地执行这个 block而不是异步地。然而block 本身并不直接支持同步等待因为它们是作为函数对象来设计的可以异步地传递给其他方法或函数。 在 GCD (Grand Central Dispatch) 中你可以使用 dispatch_sync 函数来同步执行一个 block但这通常不推荐用于主线程因为这会阻塞主线程导致界面无响应。 下面是一个使用 dispatch_sync 在非主线程上同步执行 block 的例子 dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_sync(queue, ^{ // 在这里执行你想要同步完成的任务 NSLog(This block will execute synchronously on the background queue.); }); // dispatch_sync 会等待 block 执行完成后才继续执行后面的代码 请注意如果你尝试在主线程上使用 dispatch_sync会导致死锁因为主线程会等待自己完成一个任务这是不可能的。 如果你想要等待一个异步操作完成通常的做法是使用信号量semaphore、回调闭包、Promise/Future 模式或者操作队列Operation Queue配合依赖关系。 使用信号量等待异步操作完成 dispatch_semaphore_t semaphore dispatch_semaphore_create(0); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 执行异步任务 NSLog(Async task is running.); sleep(2); // 模拟耗时操作 NSLog(Async task finished.); dispatch_semaphore_signal(semaphore); // 发送信号表示任务完成 }); dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); // 等待信号 NSLog(Continuing after async task.); 使用回调闭包等待异步操作完成 void (^completionBlock)(void) ^(){ // 异步任务完成后执行的代码 NSLog(Continuing after async task.); }; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 执行异步任务 NSLog(Async task is running.); sleep(2); // 模拟耗时操作 NSLog(Async task finished.); completionBlock(); // 调用回调闭包 }); 在这些情况下重要的是要理解你的代码是如何在并发环境中运行的并避免潜在的竞态条件和死锁。同步等待异步操作通常应该谨慎使用因为它们可能导致线程阻塞和性能问题。  block 等待 block 在iOS中你可以使用GCDGrand Central Dispatch来执行异步操作并在完成时执行block。如果你想等待一个block完成你可以使用dispatch_group_wait或者dispatch_group_notify。 以下是一个使用dispatch_group_wait的例子 dispatch_group_t group dispatch_group_create(); dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 添加异步操作到group dispatch_group_async(group, queue, ^{// 模拟耗时操作[NSThread sleepForTimeInterval:2];NSLog(Block 1 完成); });// 等待group中的所有任务完成 dispatch_group_wait(group, DISPATCH_TIME_FOREVER);// 此处的代码会在所有block完成后执行 NSLog(所有block已完成);// 清理group dispatch_release(group); 如果你想在block完成时被通知而不是等待你可以使用dispatch_group_notify dispatch_group_t group dispatch_group_create(); dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);// 添加异步操作到group dispatch_group_async(group, queue, ^{// 模拟耗时操作[NSThread sleepForTimeInterval:2];NSLog(Block 1 完成); });// 设置一个block在group中的任务完成时被通知 dispatch_group_notify(group, queue, ^{NSLog(所有block已完成); });// 清理group dispatch_release(group); 在这两个例子中我们创建了一个group并向其添加了一个异步任务。在第一个例子中我们使用dispatch_group_wait来等待所有任务完成在第二个例子中我们使用dispatch_group_notify在任务完成时得到通知。记得在完成group的操作后释放group以避免内存泄漏。
http://www.zqtcl.cn/news/796092/

相关文章:

  • 济南网站定制制作wordpress theid
  • 企业网站建设能解决什么问题设计房子需要多少钱
  • 专业网站开发制作石家庄信息门户网站定制
  • 藤虎网络广州网站建设网站域名实名认证官网
  • 佛山专业网站建设公司推荐it行业做网站一个月多少钱
  • 三网合一网站怎么做苏醒主题做的网站
  • wordpress站内统计插件wordpress模板 单栏
  • 龙岩网站定制网站开发 技术路线
  • 广州制作网站开发网站标题怎么设置
  • 海南旅游网站开发背景做网站兼容ie
  • 查找人网站 优帮云本地升级wordpress
  • 安庆什么网站好小事做wordpress主题vue
  • 高端商品网站网络运维工程师面试题及答案
  • 做网站的dw全称是啥适合迷茫年轻人的工作
  • 免费软件库合集软件资料网站wordpress go链接跳转错误
  • 重庆那里做网站外包好和镜像网站做友链
  • 网站栏目关键词装修效果图制作软件
  • 企业网站开发公司-北京公司北京医疗网站建设公司
  • 可以做配音兼职的网站产品网站怎样做外部链接
  • 如何制作网站效果图做外单要上什么网站
  • 网站开发预算编制网站可以制作ios
  • 强化网站建设网页翻译怎么弄出来
  • 长春火车站到龙嘉机场高铁时刻表视频网站建设公司排名
  • 武进网站建设代理商google官网下载
  • 简单网站开发流程图知乎怎么申请关键词推广
  • 成寿寺网站建设公司文登区做网站的公司
  • 建设一个网站用什么软件下载阿里外贸平台网站建设
  • 可信网站myeclipse网站开发
  • 做设计找素材的 网站有哪些网站建设实训个人总结
  • 浙江省建设厅继续教育官方网站网站做vr的收费