gpt4 book ai didi

ios数组崩溃多线程问题,线程安全

转载 作者:行者123 更新时间:2023-11-29 12:27:24 24 4
gpt4 key购买 nike

我正在分析一份崩溃报告,发现了一个可能由竞争条件引起的异常(我的最佳猜测)。

崩溃日志:

Fatal Exception: NSInvalidArgumentException
*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[9]
0 CoreFoundation
__exceptionPreprocess + 132
2 CoreFoundation
-[__NSPlaceholderArray initWithObjects:count:] + 412
3 CoreFoundation
-[NSArray initWithArray:range:copyItems:] + 464

最有可能的罪魁祸首是我的代码中的这个。由于该数组永远不应包含 nil 值,我的猜测是可能存在竞争条件,因为此行在重复计时器上运行,并且批处理数组会根据基于位置的请求进行更新,这些请求也会定期在其他地方出现。

NSArray *batchesCopy = [self.batches copy];

我的问题是防止这些竞争条件的最佳方法是什么?一般来说,是否有一种线程安全的方法来进行数组复制或数组编辑?例如互斥锁或可能在属性上使用“原子”选项?

最佳答案

有语言级别锁定:

@synchronized(self){
//array operations
}

关于ios数组崩溃多线程问题,线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635869/

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