2010-04-16 6 views
1

Dans la documentation j'ai lu que je n'ai pas besoin de libérer l'objet NSOperation car il sera libéré par NSOperationQueue, mais les instruments me donnent une fuite de mémoire si je ne le libère pas dans certains cas, dans d'autres cas il se bloque si je relâche. Quel est le problème que pensez-vous?NSOperationQueue et NSOperation, dois-je le libérer?

Répondre

4

Vous devez libérer votre copie que vous avez créée.

Je suppose que vous faites quelque chose comme:

SomeOperation sous-classe de NSOperation quels qui fait quelque chose.

- (void)start 
{ 
    SomeOperation *so = [[SomeOperation alloc] initWithURL:url]; 
    [queue addOperation:so]; 
    [so release]; 
} 

Apple spec:

addOperation:

...

opération

L'objet de l'opération soit ajouté à la file d'attente. Dans les applications gérées en mémoire, cet objet est conservé par la file d'attente d'opération. Dans applications collectées garbage, la file d'attente fait fortement référence à l'objet d'opération .

Une fois ajoutée, l'opération spécifiée reste dans la file d'attente jusqu'à la fin de l'exécution.

+0

Oui, je fais le même code. Donc, il doit être publié, n'est-ce pas? –

+0

Ok, ça marche avec la version et vous avez raison. :) Merci beaucoup. –

Questions connexes