试图从属性中获取CGColor值会导致崩溃

Som*_*Man 2 properties objective-c cgcolor

我正试图设置这样的属性 -

-接口:

@property (readwrite, assign) CGColorRef otherBallColor;
Run Code Online (Sandbox Code Playgroud)

-someMethod:

CGColorRef ballColor = [UIColor colorWithRed:255.0/256.0 green:165.0/256.0 blue:239.0/256.0 alpha:1.0].CGColor;  
[self setOtherBallColor:ballColor];
Run Code Online (Sandbox Code Playgroud)

一旦我尝试访问它崩溃的价值 -

-someOtherMethod(本例中为drawRect):

CGContextSetFillColorWithColor(context, otherBallColor);
Run Code Online (Sandbox Code Playgroud)

但如果在"someMethod"我做 -

CGColorRef ballColor = [UIColor blueColor].CGColor;
Run Code Online (Sandbox Code Playgroud)

......一切正常 谁能解释一下发生了什么?

非常感谢(PS,对Objective-C来说很新,一般不编程)

Gob*_*bra 5

您必须保留返回的CGColor,您的[UIColor colorWith ...]会创建一个自动释放的实例,因此,当它超出范围(我自动释放)时,也会释放相应的CGColor.

如果我可以在这种情况下使用,我建议你使用UIColor而不是CGColorRef.