2009-07-31 8 views
0

J'utilise ces lignes dans mon codeQuand et pourquoi sortir un objet

NSMutableArray * NewsFeedArray; 
NewsFeedArray = [[[NSMutableArray alloc]init]retain]; 

Où dois-je libérer cette NSMutableArray, et pourquoi je veux libérer cet objet? Dans mon projet, je libère l'objet dans ma méthode dealloc, mais cela prend plus de temps.

Quelqu'un peut-il expliquer cela?

Répondre

0

Libérez les objets que vous ajoutez à NewsFeedArray directement après les avoir ajoutés. Le fait que vous les ajoutiez à un tableau fait augmenter de un leur nombre de retenue. Le tableau les 'possède', et quand vous relâchez le tableau, tous les objets qui s'y trouvent auront leur nombre de retenues diminué de un (généralement en les relâchant aussi).

3
NewsFeedArray =[[[NSMutableArray alloc] init] retain]; 

Cette ligne de code bosses en fait compter de votre objet conserver jusqu'à 2. C'est probablement la raison pour laquelle vous rencontrez l'objet ne pas être complètement libéré lorsque vous attendez.

0

Vous avez besoin quelque chose comme ça quand vous commencez (peut-être dans votre méthode init):

NSMutableArray* news = [[NSMutableArray alloc] initWithCapacity:10]; 

Notez que vous n'avez pas besoin de le conserver.

Pour ajouter des choses:

RandomObject* obj = [[RandomObject alloc] init]; 
// set properties 
[news addObject:obj]; 
[obj release]; 

Vous pouvez libérer le nouvel objet en ajoutant au tableau a augmenté son nombre de références.

Et enfin, vous mettez ce qui suit dans votre méthode dealloc:

[news release]; 

Libérer le tableau sera magiquement libérer tous les objets qu'il détient.