iOS应用使用colorWithRed崩溃时:绿:蓝:阿尔法(iOS App crashes whe

2019-09-30 04:25发布

我有一个UIControl在我的iOS应用程序子类(我使用的是iOS 4.3),和子类的部分是调用方法“setButtonColor:(的UIColor)BC”。 每当我把这种方法从我的代码,它工作正常......但只有当我使用内置的颜色像绿彩或redColor。 如果我使用“ colorWithRed:green:blue:alpha ”,使我自己的颜色与它在控制台此消息崩溃:

-[UIDeviceRGBColor set]: message sent to deallocated instance 0x4e61560

这里的setButtonColor:方法:

-(void)setButtonColor:(UIColor *)bc{
    buttonColor = bc;
    [self setNeedsDisplay];
}

如果我删除setNeedsDisplay ,它不会崩溃,但像它应该按钮颜色没有变化。 如果有人有任何了解为什么发生这种情况,我真的很感激它,如果你需要更多的细节,只是问。

编辑:我只是看着它多一点。 在我-drawRect方法,我称之为[buttonColor集。 首先指出了,它不再崩溃,但同样,它也不会改变按钮的颜色。

提前致谢,

thekmc

Answer 1:

我认为你不使用ARC。

当设置buttonColor = bc而不保留,buttonColor将成为悬空指针在当前autorelease池冲洗(假定它不是别处保留)。

[自我setNeedsDisplay]将调用的drawRect:后来,在这一点上,buttonColor可能已经释放提到它时会崩溃您的应用程序。

它不会崩溃的静态色彩的原因可能是由于饲养的UIKit这些所有权后重新使用。

如果设置为公元前后保留buttonColor,您保留所有权,这样它仍然是有效的drawRect :.



文章来源: iOS App crashes when using colorWithRed:green:blue:alpha