我有一个像这样的Objective-C ++函数:
-(void)foo:(const List&)vectorList
{
dispatch_async(self.queue, ^{
[koo:vectorList];
}
}
问题有时候在koo函数中,vectorList会丢失数据,比如说向量变空了。它并不总是发生。我不是为什么。有人对此有所了解吗?
答案 0 :(得分:3)
vectorList正在丢失数据
您的块正在捕获引用,而不是所引用内容的副本。如果在创建块之后但在执行之前,引用的任何内容都会被突变,那么块将会看到这些突变。
如果您希望块在创建块的位置对引用值进行操作,则必须复制它并捕获该副本。
HTH