gpt4 book ai didi

swift - 类型转换是 Swift 中的原子操作吗? - BAD_ACCESS_ERROR

转载 作者:行者123 更新时间:2023-11-28 07:43:16 25 4
gpt4 key购买 nike

假设我正在尝试访问两个线程之间的共享变量。一个线程将不断地将共享变量设置为 nil 或设置为可以释放的对象的引用。

类代码

class ConcurrentPrinter {
var value: AnyObject?
}

线程一

// called 30 times per second
func setter(){
value = shouldSet ? nil : valueArray[0]
// where the value is an instance type
}

线程二

// also called 30 times per second
func getter() {
if value != nil {
guard let desiredObject = value as? desiredObjectType else {
return
}
}

出于某种原因,当它试图将值转换为 desiredObjectType 时,我在 guard 语句中收到 Bad_Address 错误。发生这种情况是因为强制转换操作获取了值的地址,然后在完成强制转换操作之前它被释放了吗?

最佳答案

好吧,我明白了。答案是将每个操作放在 DispatchQueue 上,并使用异步请求运行每个代码。这样可以保证两段代码同时运行

关于swift - 类型转换是 Swift 中的原子操作吗? - BAD_ACCESS_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51639209/

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