Objective c - 尝试在队列中复制 NSArray 时得到 exc_bad_access
Objective c - getting exc_bad_access when trying to copy NSArray in queue
我正在尝试在特定队列中复制一个数组,但有时我的应用会因 exc_bad_access
而崩溃。
- (NSArray *)safeCopyArrayInQueue:(dispatch_queue_t)queue andArray:(NSArray *)arrayToCopy {
__block NSArray *copy = nil;
dispatch_sync(queue, ^{
@try {
copy = [NSArray arrayWithArray:arrayToCopy]; // this line crashes
}
@catch (NSException *exception) {
NSLog(@"%@", exception.description);
copy = @[];
}
});
return copy;
}
感谢 Rohan Bhale 我发现了这个问题 - 问题的发生是因为我将数组作为参数传递,并且在我在 [NSArray arrayWithArray:] 方法中使用它之前它被释放了。
为了修复它,我将数组用作 class 变量并仅在其队列中访问它。
我正在尝试在特定队列中复制一个数组,但有时我的应用会因 exc_bad_access
而崩溃。
- (NSArray *)safeCopyArrayInQueue:(dispatch_queue_t)queue andArray:(NSArray *)arrayToCopy {
__block NSArray *copy = nil;
dispatch_sync(queue, ^{
@try {
copy = [NSArray arrayWithArray:arrayToCopy]; // this line crashes
}
@catch (NSException *exception) {
NSLog(@"%@", exception.description);
copy = @[];
}
});
return copy;
}
感谢 Rohan Bhale 我发现了这个问题 - 问题的发生是因为我将数组作为参数传递,并且在我在 [NSArray arrayWithArray:] 方法中使用它之前它被释放了。
为了修复它,我将数组用作 class 变量并仅在其队列中访问它。