2010-07-08 5 views
1

j'ai pris l'exemple MailComposer ajouté à un projet simple et sous un bouton j'exécute le code suivant:Comment libérer cet objet?

// display in app email 
MailComposerViewController *emailClient = [[MailComposerViewController alloc] init]; 
[self.view addSubview:emailClient.view]; 
[emailClient showPicker:self]; 
[emailClient release]; 

La dernière ligne est me donner des maux de tête. Si je ne mets pas cela comme si je crée une fuite de mémoire, si j'ajoute cette ligne le client de messagerie apparaît mais l'application se bloque quand je clique sur annuler ou envoyer. Avec la fuite de mémoire (aka pas de dernière ligne) tout fonctionne bien.

Quel est le meilleur moyen dans un cas très bien connu comme ça? Je veux créer une option dans la même méthode et cet objet a des délégués et autres. Il ne vaut pas la peine d'avoir cet objet en vie pendant toute la durée de vie de l'application.

Merci, amok

Répondre

1

Vous devez garder un contrôleur de vue pendant que vous utilisez l'affichage géré par ledit contrôleur de vue. Au lieu de cela, vous devez avoir une variable d'instance ou une propriété dans laquelle vous conservez emailClient.

C'est génial que vous vouliez utiliser la plus petite quantité de mémoire possible; mais parfois, il est juste nécessaire de garder certains objets en vie.

Questions connexes