12
votes

Pourquoi utiliser NsaToreleeePool?

Considérez le programme suivant:

int main (int argc, const char * argv[]) { 
    NSLog(@"Programming is Fun !"); 
    return 0;
}


0 commentaires

6 Réponses :


0
votes

Consultez le nsaToreleeePool Documentation


0 commentaires

0
votes

Une introduction générale est disponible sur le site Web d'Apple:


0 commentaires

9
votes

nsObject code> contient une fonction soignée appelée AutoRelease code>. Cela signifie que tous les objets de l'objectif-c contiennent cette fonction.

Cette fonction insertion auto code> dans le pool Autoréleuillet, retardant l'appel à la fonction de l'appel à l'objet code> jusqu'à ce que la piscine Autoréleuille soit DealLocated. La plupart des API internes utilisent une piscine Autoréleuillet et à côté de l'une située dans Main () Code>, il y en a une allouée et traitée dans la boucle principale de Uikit dans chaque passage. P>

En bref: il est La file d'attente pour la diminution retardée du compteur de référence. P>

Exemple sur la portée de l'autorelease: P>

MyObject *obj = [[[MyClass alloc] init] autorelease];


0 commentaires

3
votes

J'ai trouvé raison ... "Si une piscine n'est pas disponible, des objets automatiques ne sont pas libérés et que vous fassiez la mémoire de la mémoire. Dans cette situation, votre programme enregistre généralement des messages d'avertissement appropriés."


1 commentaires

Si vous trouvez une autre réponse particulièrement utile, n'hésitez pas à "augmenter" et / ou le marquer comme correct.



8
votes

Mais si je ne veux pas relâcher automatiquement aucun objet, puis-je aussi utiliser la piscine de libération automatique ??

Notez également que la bibliothèque de cacao utilise Autoréleuillet de manière approfondie. Donc, même si vous pensez que vous n'utilisez pas la piscine dans votre code, vous devez préparer la piscine.


0 commentaires

3
votes

Vous n'êtes généralement pas obligé de créer vous-même un bloc de pool Autoréleuillet, ou même voir le code utilisé pour en créer un. Trois occasions lorsque vous pourriez utiliser vos propres blocs de piscine Autoréleuillet,

  • Si vous écrivez un programme non basé sur un cadre UI, comme un outil de ligne de commande.

  • Si vous écrivez une boucle qui crée de nombreux objets temporaires - vous pouvez utiliser un bloc de piscine Autoréleuillet à l'intérieur de la boucle pour éliminer ces objets avant la prochaine itération. En utilisant un bloc de piscine Autoréleuillet dans le La boucle aide à réduire l'empreinte de mémoire maximale de l'application.

  • Si vous appartenez un fil secondaire - vous devez créer votre propre Bloc de piscine Autoréleuillet dès que le fil commence à exécuter; Sinon, votre application va étancher des objets.


0 commentaires