适配 Swift6.0

build setting,更改 swift version 到 swift 6。
打开 Strict Concurrency Checking,到 Complete。
Xcode build 后,查看 warning。

  1. 全局变量初始化,是否会造成 data-race?
    不会,虽然 Swift 全局变量是懒加载的。但 Swift 全局变量初始化,是数据安全的。

  2. 全局变量如何去除 data- race 的警告?
    如果不会更改这个变量,则使用 let, 即为最优解。
    使用 MainActor,则这个变量的更改都会在 MainActor 下执行。
    标记为 unsafe。

  3. 跨 Actor 传递值类型。
    标记为 Sendable, 对于值类型中的 class 或者一些 OC Type,
    需要标记 nonisolated(unsafe),来去除 warning。

  4. 对于用 MainActor 标记的类,那些代理方法如何处理?
    标记那些未知的代理方法 nonisolatetd, 方法中,
    使用 MainActor.assumeIsolated { }, 标记运行的 Actor。
    使用 MainActor.run { },强制在 MainActor 执行。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • import (导入声明) 导入声明(import declaration) 让你可以使用在其他文件中声明的内容。...
    xiaofu666阅读 1,596评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,779评论 1 32
  • 参考资源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然阅读 1,546评论 0 6
  • Swift5总结 关于Swift Swift通过采用现代编程模式来定义大多数常见的编程错误: 变量在使用前始终初始...
    酒茶白开水阅读 695评论 0 1
  • 基本运算符 10:00 Swift 的赋值操作并不返回任何值。所以下面语句是无效的: 一元正号符(+)不做任何改...
    wg689阅读 586评论 0 1

友情链接更多精彩内容