ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

速记:swift6的并发机制

速记:swift6的并发机制 资料没看全先抓一点重点。swift5程序升级上来一堆错误主要源自更严格的并发机制。简单一点就是按如下规则来写给类加上MainActor强制运行在主线程据说6.2这是默认的不需要写出来给后台方法加上concurrent并发强制后台运行因为是强制的就不需要判断当前是什么线程了在concurrent方法里用DispatchQueue.main来执行需要在主线程运行的代码nonisolated 非隔离 方法继承调用者线程与之对应isolated 隔离说实话我更喜欢明确的线程锁。async和awaitasync指示方法是异步执行的await指示此处需要等待异步方法返回的结果。如果异步方法可能抛出异常可以用try await ...来捕获do... try...catch结构。async let 常量名 异步方法并发执行而不等待结果常量下次被使用前会确认初始化完成只能在方法内部使用不能用于属性定义。连续多个async let会并发执行返回结果的顺序不确定。Task异步任务。不支持并发的环境不能直接await可以套在Task里面Task{await...}actoractor相当于一个特殊的类不可继承。actor的所有可变数据的访问默认都被隔离猜测在独立线程因此对于外部都是异步的需要awaitnonisolated用于变量非隔离的无需使用在常量上因为没有必要globalActor和MainActor定义全局actor可以通过“actor名称”来使用可以用在类、属性、方法、闭包上。MainAcotr是预定义的全局actor隔离在主线程执行。MainActor.run{}可以替代DispatchQueue.main.async/sync。
返回列表