Цель c - получить exc_bad_access при попытке скопировать NSArray в очередь - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь скопировать массив внутри определенной очереди, и иногда мое приложение вылетает с 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 голосов
/ 05 июня 2019

Я нашел проблему благодаря Rohan Bhale - проблема возникла потому, что я передал массив в качестве параметра, и он был освобожден до того, как я использовал его в методе [NSArray arrayWithArray:].

Чтобы исправить это, я использовал массив как переменную класса и обращался к нему только внутри его очереди.

...