CGContextRef - EXC_BAD_ACCESS错误

时间:2012-09-02 16:12:15

标签: iphone ios cocoa-touch core-graphics

我是UIView的子类,并使用它的实例来设置我的UITableViewCell backgroundView和selectedBackedView属性。我在UIView子类的drawRect方法中收到EXC_BAD_ACCESS错误。

    if(nil == cell){

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                 reuseIdentifier:CellIdentifier];
    cell.backgroundView = [[CCViewBackground alloc]init];
    cell.selectedBackgroundView = [[CCViewBackground alloc]init];

    }

UIView子类CCBackgroundView -drawRect:

- (void)drawRect:(CGRect)rect
{
     // Drawing code
     CGContextRef context = UIGraphicsGetCurrentContext();

     CGColorRef redColor = 
     [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor;

     CGContextSetFillColorWithColor(context, redColor); //Receiving EXC_BAD_ACCESS here
     CGContextFillRect(context, self.bounds);

}

1 个答案:

答案 0 :(得分:4)

我假设您正在使用ARC。如果是这样,您遇到了一个众所周知的问题,CGColorRef的发布时间比您预期的要早。 This article详细解释了这个问题并提供了几种解决方案。