目标C-尝试在队列中复制NSArray时获取exc_bad_access

时间:2019-06-03 08:20:05

标签: ios objective-c exc-bad-access

我试图在特定队列中复制一个数组,有时我的应用程序因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;
}

1 个答案:

答案 0 :(得分:0)

由于Rohan Bhale,我发现了这个问题-发生问题是因为我将数组作为参数传递了,并且在我在[NSArray arrayWithArray:]方法中使用该数组之前已将其释放。

要修复它,我将数组用作类变量,并且只能在其队列中访问它。