2012-09-02 5 views
2

Je sous-classe UIView et utilise des instances de cela pour définir mes propriétés UITViewViewCell backgroundView et selectedBackedView. Je reçois une erreur EXC_BAD_ACCESS dans la méthode drawRect de ma sous-classe UIView.CGContextRef - EXC_BAD_ACCESS Erreur

if(nil == cell){ 

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

    } 

sous-classe 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); 

} 
+0

pouvez-vous activer NSZombie pour votre application et partager la raison de recevoir EXC_BAD_ACCESS –

+0

Ceci est maintenant le message d'erreur avec NSZombie activé - *** - [Not A Type retain]: message envoyé à l'instance libérée 0x109b50 – Michael

Répondre

4

Je suppose que vous utilisez ARC. Si oui, vous rencontrez un problème bien connu où le CGColorRef est publié plus tôt que prévu. This article explique le problème en détail et fournit plusieurs solutions.

+0

Oui, je suis utilisant l'arc. Merci pour l'article, il a corrigé le problème – Michael

+0

Louez les Internets! Cela a résolu, merci pour l'article! –

+0

Quelqu'un peut-il s'il vous plaît partager le lien pour l'article à nouveau ... il est brisé lien maintenant. – Queen