Alv*_*par 1 iphone exc-bad-access
我很困惑为什么我的应用程序崩溃了这个错误.
我已经实现了displayLayer方法(用于渲染CALayer).这个方法第一次运行时工作正常.但随后的调用是在发生错误时.
当self.bgColor被设置为上下文填充颜色时,似乎会发生错误.有趣的...如果我在那条线之前创建了bgColor,那么事情就会奏效.但就目前而言,bgColor是在初始化此类(displayLayer方法的容器)时创建的.
-(void)displayLayer:(CALayer *)caLayer
{
UIGraphicsBeginImageContext(caLayer.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, self.bgColor);
CGContextFillRect(context, CGRectMake(0, 0, 320, 25));
[self drawText:context];
// get image buffer
UIImage *imageBuffer = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// set layer contents to image buffer
caLayer.contents = (id)[imageBuffer CGImage];
}
Run Code Online (Sandbox Code Playgroud)
我还没有做过很多iPhone编程,也从未使用过CGColor实例变量,所以我会这样做:
@interface {
....
UIColor *bgColor;
....
}
@property (nonatomic, retain) UIColor *bgColor;
...
@end
@implementation
@synthesize bgColor;
- (id)init {
...
self.bgColor = [UIColor blackColor];
...
}
-(void)displayLayer:(CALayer *)caLayer {
...
CGContextSetFillColorWithColor(context, self.bgColor.CGColor);
...
}
...
@end
Run Code Online (Sandbox Code Playgroud)
[UIColor blackColor]返回一个自动释放的对象,并将其分配给实例变量而不保留它.
在init中使用self.bgColor而不仅仅是bgColor并设置属性以保留其值将确保保留颜色并稍后可以在displayLayer中使用.
正如我所提到的,我没有直接使用CGColors的经验,这就是我在上面的代码中使用UIColor的原因.请根据需要调整.
| 归档时间: |
|
| 查看次数: |
5411 次 |
| 最近记录: |