我试图在特定队列中复制一个数组,有时我的应用程序因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;
}
答案 0 :(得分:0)
由于Rohan Bhale,我发现了这个问题-发生问题是因为我将数组作为参数传递了,并且在我在[NSArray arrayWithArray:]方法中使用该数组之前已将其释放。
要修复它,我将数组用作类变量,并且只能在其队列中访问它。