2009-10-30 4 views
0

Je crée une cellule personnalisée dans mon iphone aap et j'y ajoute aussi une image mais je continue d'avoir une erreur à [image drawatpoint: p];Pourquoi drawAtPoint d'UIImage renvoie-t-il une erreur dans ce code?

l'erreur indique *** - [UIImage drawAtPoint:]: message envoyé à l'instance désallouées 0x45cb1f0

mon code est

-(void)setImage:(UIImage *)i 
{ 
    //[image release]; 
    image = i; 
    [self setNeedsDisplay]; 
} 

- (void)setNeedsDisplay 
{ 
    [super setNeedsDisplay]; 
    [contentView setNeedsDisplay]; 
} 

- (void)drawContentView:(CGRect)r 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    UIColor *backgroundColor = [UIColor yellowColor]; 
    UIColor *textColor = [UIColor blackColor]; 

    if(self.selected) 
    { 
     backgroundColor = [UIColor clearColor]; 
     textColor = [UIColor whiteColor]; 
    } 

    [backgroundColor set]; 
    CGContextFillRect(context, r); 

    CGPoint p; 
    p.x = 3; 
    p.y = 3; 

    [textColor set]; 
    UIImage *image2 = image; 
    [image2 drawAtPoint:p]; 

    p.x += 70; // space between words 
    [text2 drawAtPoint:p withFont:firstTextFont]; 

    //[image release]; 
} 

Répondre

1

Vous ne conservez pas l'image dans votre setter (setImage:) . Comme le message d'erreur l'indique, il est parti au moment où vous essayez de le dessiner.

+0

J'ai ajouté l'image = [je retiens]; Cela a corrigé le problème – iosdevnyc

+0

Maintenant que vous avez ajouté [i retain] ;, vous devez également décommenter le [release d'image]; appelez setImage: pour éviter les fuites de mémoire. –

+0

Ok sonne bien – iosdevnyc

Questions connexes