This question already has answers here:
Assigning an existing CGColor to a CGColor property works in iOS Simulator, not iOS device. Why?

(3个答案)


7年前关闭。




我将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);

}

最佳答案

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

关于iphone - CGContextRef-EXC_BAD_ACCESS错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12237554/

10-11 14:49