Попытка удалить подслой приводит к завершению с необработанным исключением типа NSException - PullRequest
0 голосов
/ 01 ноября 2018

Я добавляю слой градиента и добавляю к нему имя. Позже, когда я пытаюсь удалить его, выполняя поиск по этому имени, мое приложение вылетает. Вот код, который я использую.

CAGradientLayer* gradient = [CAGradientLayer layer];
gradient.colors = [NSArray arrayWithObjects:
                   ..... setting up gradient.....
gradientLayer.name      = @"GradientLayer";

[self.myView.layer insertSublayer:gradient atIndex:0];

Позже я пытаюсь удалить его.

for (CALayer *layer in self.myView.layer.sublayers) {
        if ([layer.name isEqualToString:@"GradientLayer"])
        {
            [layer removeFromSuperlayer];
        }
    }

Вылетает при попытке удалить подслой.

1 Ответ

0 голосов
/ 02 ноября 2018

Ваш цикл видоизменяется self.myView.layer.sublayers во время его перечисления.

Добавьте break; после [layer removeFromSuperLayer];, чтобы прекратить перечисление, тогда все будет в порядке.

...