gpt4 book ai didi

ios - 在 iOS 中从 UIColor 获取 CGColor 时出现异常

转载 作者:行者123 更新时间:2023-11-28 18:07:17 25 4
gpt4 key购买 nike

我正在尝试为我的 View 创建自定义按钮。一切正常,除了在渲染时我收到关于我的颜色的异常。我的类(class)有 2 种颜色属性:

@property (nonatomic, retain) UIColor* defaultBackground;
@property (nonatomic, retain) UIColor* clickedBackground;

一个代表默认渲染颜色,另一个代表用户点击它时的颜色。在我的 initWithFrame 方法中,我初始化了颜色:

defaultBackground = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
clickedBackground = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

这一切都很好,直到我到达渲染时它在获取 CGColor 时抛出异常:

if((self.state & UIControlStateHighlighted) == 0)
{
CGContextSaveGState(context);
CGContextSetFillColorWithColor(context, defaultBackground.CGColor); //Crashes on this line
...

这是我遇到的异常:

2012-04-13 10:19:51.005 -[__NSMallocBlock__ CGColor]: unrecognized selector sent to instance 0x7d94d20
2012-04-13 10:19:51.072 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSMallocBlock__ CGColor]: unrecognized selector sent to instance 0x7d94d20'

任何想法将不胜感激。

最佳答案

initWithFrame: 中的两行更改如下:

self.defaultBackground = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
self.clickedBackground = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

问题在于,将自动释放的 UIColor 对象直接分配给 ivar 会导致指向已释放对象的悬垂指针。另一种方法是:

defaultBackground = [[UIColor alloc] initWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
clickedBackground = [[UIColor alloc] initWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];

关于ios - 在 iOS 中从 UIColor 获取 CGColor 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142797/

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