2010-06-26 19 views
1

J'ai créé un menu principal statique avec un TableView. Parfois, il se bloque parce que ma sous-vue a déjà désalloué une sous-vue.Objective-C: Point de publication d'une vue

Est également autorisé à libérer une vue dans la méthode dealloc de l'objet local au lieu de cela:

[NavController pushViewController:self.AnotherView animated:YES]; 
[self.AnotherView release]; //This line into (void)viewDidLoad 

AnotherView est défini dans la headerfile comme la propriété et aussi synchronozed dans le .m-File

Lorsque j'utilise la méthode dealloc, cela fonctionne très bien sur l'appareil, mais j'ai besoin de savoir si c'est correct.

Répondre

1

Vous appelez uniquement la version pour les objets init ou alloc vous-même. Si c'est une propriété de votre classe alors release dans le dealloc de votre classe.

Donc, dans votre cas, à moins que vous initanotherView quelques lignes au-dessus de votre code d'échantillon (même méthode), appelant release là-dessus où vous va provoquer une fuite/SIG_ABORT parce que vous avez fait prématurément.

N'hésitez pas à poster plus de code, en particulier comment anotherView est affecté et vous pouvez obtenir une réponse plus spécifique.

+0

la libération causera une double libération, pas une fuite. – drawnonward

+0

True. J'essayais de comprendre l'erreur que Simon recevait. Mais encore, c'était une libération prématurée. TWSS –

+0

vous devez également libérer l'objet si vous le retenez ou le copiez ... – holex