2010-12-07 9 views
0

Ceci est mon scénario J'ai une vue principale, dans laquelle plusieurs copies d'une sous-vue sont créées. Voici comment je le fais 1. Dans la vue principale, j'ai créé une variable pour la sous-vue 2. créé plusieurs copies de la sous-vue et les a affichées dans une vue défilante qui fonctionne bien 3. Quand sera le bon moment pour libérer la variable subview?iphone; quand libérer une vue lorsque plusieurs copies en sont dérivées?

Déclaration de sous-vue SubView * svm; Je ne suis pas sûr que ce soit la bonne façon, mais cela fonctionne bien.

Si je publie svm dans le dealloc de mainview, cela ira-t-il? Comment devrais-je m'y prendre?

Merci Veeru

Répondre

1

Chaque fois que vous alloc une nouvelle mémoire est allouée pour la nouvelle instance. Pour éviter les fuites de mémoire, vous devez libérer avant de créer une nouvelle instance.

 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 

[svm release]; 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

BTW lorsque vous ajoutez votre svm comme sous-vue dans une autre vue, il se conserve par elle est super vue et vous pouvez en toute sécurité libérer si elle est plus nécessaire d'accéder directement par votre code.

+0

mais si je libère, l'application se bloque sur les opérations qui sont effectuées sur la vue de la sous-vue, je présume que la vue est libérée de la mémoire avant même qu'elle ne termine ses opérations - ai-je tort? – Veeru

+0

Vous devez ajouter la vue à sa vue d'ensemble avant de la libérer. – Gu1234

+0

bien sûr, ouais je l'ajoute à la superview. Alors est-il sûr de libérer la vue après qu'elle ait été ajoutée à l'aperçu? même si certaines tâches se produisent lorsque la sous-vue est chargée/est apparue? – Veeru