gpt4 book ai didi

ios - CAGradientLayer 在最简单的可能用例中崩溃并显示 "exc_bad_access"

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:32:35 25 4
gpt4 key购买 nike

一个普通的 UIView 子类,只有以下代码:

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code

CAGradientLayer* gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];
gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];

[self.layer addSublayer:gradientLayer];

return self;
}

使用 EXC_BAD_ACCESS 杀死运行时(不,在你问之前没有僵尸)。

此外,这不是 CAGradientLayer 过度释放 - 在层上放置多个 float 保留没有效果。

(顺便说一句,我从未见过 CAGradientLayer 在我参与的任何项目中实际工作。我认为它被诅咒了:)。我不会使用它,除非我需要动画渐变,而 Apple 的 CGGradient 类只支持 const 数组,这使得动画代码非常容易出错)

最佳答案

问题可能出在这里:

gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];

这些颜色必须是 Core Graphic 的等效颜色,所以这可能有效。

gradientLayer.colors = [NSArray arrayWithObjects:(__bridge id)[UIColor whiteColor].CGColor, (__bridge id)[UIColor blackColor].CGColor, nil]; 

关于ios - CAGradientLayer 在最简单的可能用例中崩溃并显示 "exc_bad_access",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com