Je travaille sur l'animation de petites sous-vues à travers mon interface utilisateur en utilisant une transition de flip. Pour que la transition Flip fonctionne correctement, je crée un UIView temporaire pour fournir le contexte, exécuter la transition, puis nettoyer ensuite. Mais j'ai du mal à trouver comment libérer l'objet sans écraser l'application. Voici le bloc de code:Comment puis-je éviter une fuite avec cette séquence d'animation basée sur des blocs?
UIView *tempContainer = [UIView alloc];
tempContainer = [self.view viewWithTag:700];
[UIView transitionWithView:tempContainer
duration:2
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^{
[[[tempContainer subviews] objectAtIndex:0] removeFromSuperview];
[tempContainer addSubview:newImageView];
[newImageView release];
}
completion:^(BOOL finished){
[tempContainer release]; //Crashes app
}];
J'utilise des techniques d'animation en mode bloc pour iOS4. Le problème est que mon tempContainer fuit définitivement, mais si je le libère ou le relance automatiquement dans le bloc d'achèvement, mon application se bloque, et je le fais après le message [UIView transition ...], il plante. Quelle est la meilleure façon de refactoriser ceci afin que je ne perde pas ma mémoire? (J'ai 30 de ces petites choses à faire.)
aha, gotcah. Je l'ai changé en UIView * tempController = [self.view viewWithTag: 700]; et maintenant je ne vois aucune fuite, et pas besoin de libérer tempController car c'est juste un pointeur vers une autre vue appartenant à quelque chose d'autre. Merci! – Jeof