尝试删除子层会导致终止并出现 NSException 类型的未捕获异常
Trying to remove a sublayer causes terminating with uncaught exception of type NSException
我正在添加渐变图层并为其附加名称。
稍后,当我尝试通过搜索该名称来删除它时,我的应用程序崩溃了。这是我正在使用的代码。
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];
}
}
当它试图移除子图层时崩溃。
您的循环在枚举时发生变异 self.myView.layer.sublayers
。
在[layer removeFromSuperLayer];
后加上break;
停止枚举,就可以了
我正在添加渐变图层并为其附加名称。 稍后,当我尝试通过搜索该名称来删除它时,我的应用程序崩溃了。这是我正在使用的代码。
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];
}
}
当它试图移除子图层时崩溃。
您的循环在枚举时发生变异 self.myView.layer.sublayers
。
在[layer removeFromSuperLayer];
后加上break;
停止枚举,就可以了