2010-03-16 5 views
0

J'ai ce code:Comment éviter « un message superview envoyé à l'objet libéré » iphone

CardView *aCardView = [self prendiCartaDalMazzo]; 

[aCardView removeFromSuperview]; 
[self.mieCarte addSubview:aCardView]; 

lorsque je tente d'ajouter aCardView comme en sous-vue mieCarte puis-je obtenir cette erreur:

objc[4800]: FREED(id): message superview sent to freed object=0x393f130 Program received signal: “EXC_BAD_INSTRUCTION”.

Merci à tous peuvent aider.

Répondre

2

-removeFromSuperview fait un communiqué, ce qui provoque probablement la destruction (la référence du superview est probablement le dernier restant) ..

Do

[aCardView retain]; 
[aCardView removeFromSuperview]; 

...

à la place.

+0

C'était le problème, merci beaucoup. – Giovanni

+0

je pense que d'avoir un pointeur vers une instance de aCardView qui était enalf merci encore – Giovanni

0

removeFromSuperview libère également le récepteur (tout comme addSubview: le conserve).

Vous devez conserver la vue de la carte avant de la supprimer, puis la relâcher après l'avoir ajoutée en tant que sous-vue à une autre vue.

+0

Merci pour votre netware claire. – Giovanni

Questions connexes