2011-04-26 8 views

Répondre

3

La meilleure façon d'éviter ces problèmes de mémoire est de procéder à un codage approprié. Il suffit de passer par la référence Apple sur Memory Management.

Vous libérez uniquement ou autoréglez objets que vous possédez.

Vous prenez possession d'un objet si vous créer à l'aide d'une méthode dont le nom commence par « alloc », « nouveau », « copie » ou « mutableCopy » (par exemple, alloc, newObject, ou mutableCopy), ou si vous lui envoyer un message de conservation.

Vous utilisez la libération ou autorelease pour abandonner la propriété d'un objet. autorelease signifie simplement « envoyer un communiqué message dans l'avenir » (plus précisément: lorsque la piscine autorelease utilisé reçoit un message à comprendre fuite quand ce sera, voir « AutoRelease Fonds »).

2

Sans plus d'info tout ce que je peux dire est ...

  • quoi que ce soit Relâchez vous INIT et/ou alloc qui n'est pas autoeleased.
  • Supprimer tout ce que vous appelez « nouveau » sur
  • gratuitement les données que vous malloc
  • utiliser des instruments pour diagnostiquer où vos fuites INTERVENUES.
  • La version tout ce que vous conserviez

quoi que ce soit vous libérer à init est pas autoreleased.

+0

Relâchez tout ce que vous ** retenez ** également. –

+0

@Radek S J'ai ajouté cela. –

1

@Nipin, pour résoudre les problèmes de mémoire, vous devrez libérer chaque objet que vous allouons ... à savoir, utiliser [yourObject release]; pour chaque objet que vous appelez la méthode alloc ... En outre, décharger toutes les textures vous utilisez [texturename unload];

[texturename release]; 

-ce que tous ces lorsque vous ne nécessite plus les objets ou les textures et dans la plupart des cas, il peut être là où vous sortez de la scène ...