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

墨客网站建设xcyxqc搜索引擎排名优化建议

墨客网站建设xcyxqc,搜索引擎排名优化建议,上海企业信息公示系统官网,wordpress自动设置缩略图概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代#xff0c;而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过#xff0c;从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不… 概述 WWDC 24 终于在 Swift 十岁生日发布了全新的 Swift 6。这不仅意味着 Swift 进入了全新的“大”版本时代而且 Swift 编译器终于做到了并发代码执行的“绝对安全”。 不过从 Swift 5 一步迈入“新时代”的小伙伴们可能对新的并发检查有些许“水土不服”比如在同步全局变量时可能会引发 Swift 6 编译器的“怨声载道”。 在本篇博文中您将学到如下内容 概述1. 由一个并发错误引发的“探险”2. 拯救者全局 Actor3. 另一种解决之道总结 驯服 Swift 6 并发代码执行中的安全隐患是每个秃头码农心中的“壮志凌云”那还等什么呢让我们马上将“野性难驯”的 Concurrency 执行驯化的俯首帖耳吧 Let‘s go 1. 由一个并发错误引发的“探险” 在将 Xcode 项目的编译器版本从 Swift 5 升级至 6 之后小伙伴们会发之前很多“安适如常”的并发代码突然变得东差西误起来。 比如下面一段简单的代码在 Swift 6 环境中运行就仿佛会“魂不守舍”一般 var id UUID()func test() async {id UUID() }除了全局变量以外对于结构或类的静态变量也会有类似的问题 struct Model {static var id UUID()func test() async {id UUID()} }这都是怎么回事呢 原来从 Swift 6 开始苹果对并发执行安全性的态度变得极度较真起来。为了不惯着 Swift 5 中模棱两可的并发错误苹果采取“零容忍”策略让代码中所有潜在的并发陷阱都变得“原形毕露”了 在上面的代码中我们在异步 test 方法中修改了全局变量而该方法有可能会被并发执行。这绝对是一个非常严重的并发同步错误。除了将全局变量 id 变为只读在这个例子中显然不可行以外还有其它解决良策么 答案是必须的 2. 拯救者全局 Actor 为了让全局变量不受并发执行同步的困扰之苦我们可以简单的将它们用 MainActor 来修饰 MainActor var id UUID()MainActor func test() async {id UUID() }不过这样一来我们就必须把所有涉及全局变量的读写操作都限制在主线程上这无疑加重了主线程中不必要的执行负担。 然而我们可以创建自己的全局 Actor 然后用这些自定义全局 Actor 来让之前的同步问题迎刃而解 globalActor actor MyActor {static let shared MyActor() }MyActor var id UUID()MyActor func test() async {id UUID() }MyActor struct Model {static var id UUID()func test() async {Self.id UUID()} }或者不用全局 Actor 来修饰 test 方法而在 test 内部做文章 func test() async {Task {MyActor inid UUID()} }这样一来我们就可以将所有对全局变量的读写限制在特定的 Actor 之中从而大功告成 更多关于 Swift 语言中 Actor 的更多介绍请小伙伴们移步如下链接进一步观赏精彩内容 Swift 结构化并发之全局 Actor 趣谈深入理解 Swift 新并发模型中 Actor 的重入Reentrancy问题SwiftUI async/await 并发代码提示 Non-sendable type cannot cross actor boundary 警告的解决 3. 另一种解决之道 除了用上面的方法以外如果可以确定对全局变量的并发读写绝对不会引发同步问题的话我们还可以显式让编译器“明明白白我们的心” nonisolated(unsafe) var id UUID()func test() async {id UUID() }如上代码所示我们用 nonisolated(unsafe) 修饰语句明确告知 Swift 6 编译器id 全局变量绝对不会导致并发执行中的同步问题。但这样一来编译器将会对该全局变量在同步执行中所有的并发潜在问题置之不理、一笑而过。所以这等于将全部的并发安全检查又重新转移到了小伙伴们自身的肩头。 使用 nonisolated(unsafe) 修饰语句还有一种可能是明知这些全局变量可能发生并发同步问题但暂时先将他们搁置一边等以后再集中火力攻克它们。 希望大家在使用这种方法时慎之又慎切记切记 想要系统学习 Swift 的小伙伴们可以移步我的《Swift 语言开发精讲》专栏来看一看哦 Swift 语言开发精讲 总结 在本篇博文中我们讨论了在 Swift 6 中异步并发读写全局变量时让编译器“大发雷霆”的原因并给出多种解决之道棒棒哒 感谢观赏再会啦
http://www.hkea.cn/news/14285097/

相关文章:

  • 网站设计宽度库易网网站
  • 青岛网站关键字优化wordpress调取全部图片缩略图
  • asp网站目录权限wordpress与joomla哪个好
  • 如何对网站进行改版wordpress下载链接 插件
  • 运城市住房和城乡建设部网站莱芜网逃人员
  • 专业旅游网站建设直招招聘网
  • 永安市住房与城乡建设局网站网站建设 ipv6
  • python 兼职网站开发新乡市网站建设电脑培训班
  • 网站建设公司公司介绍商标生成器在线制作
  • 做装修的人到什么网站找工作设计平台软件
  • 敬请期待是什么意思seo排名优化是什么
  • 广州网站搜索排名医疗网站建设平台价格
  • 成都公司网站seo酒店网站建设方案书
  • 深圳做微信网站多少钱可不可以异地建设网站
  • 网站标题 关键字怎么设置代码立即优化在哪里
  • 设计网站会员哪个好用信息网站开发合同
  • 个人网站建设怎么样网站微信分享怎么做
  • 网站建设哪家专业唯品会是哪做的网站
  • 青县建设银行网站网站建设高清图片
  • 做抛物线的网站高端企业网站建设服务商
  • 南昌网站页面优化网站每天更新多少文章
  • 网站的加盟代理网络策划与营销
  • 工业园做网站的公司新余网站建设公司
  • 公司网站经典案例乐清做网站价格
  • 手机网站建设推广方案pptps毕业设计做网站界面
  • 网站内容页模板wordpress 调用页面
  • wordpress 菜单加图标广州seo工程师
  • 北京建设银行纪念钞预定官方网站摄影网站设计素材
  • 泉州住房和城乡建设局网站电子印章手机在线制作软件
  • 宿州市住房和城乡建设局网站微信h5商城网站