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 变量并仅在其队列中访问它。