Avez-vous besoin de créer un NSAutoreleasePool à l'intérieur d'un bloc dans le PGCD?
Normalement, si vous frayer un thread d'arrière-plan ou d'exécuter une NSOperation sur un NSOperationQueue vous avez besoin pour créer un NSAutoreleasePool pour que le thread ou de fonctionnement car il n'en existe pas par défaut.
Fait la même règle s'applique à un bloc qui est placé à l'intérieur d'un Grand Central Dispatch de la file d'attente et sera exécuté sur un non-thread principal? C'est, avez-vous besoin de créer un NSAutoreleasePool à l'intérieur de chaque bloc vous envoi à rien d'autre que la file d'attente principale?
Dans mon test limitée, je ne vois pas la console avertissements pour autoreleased les objets que vous voyez normalement avec les threads d'arrière-plan ou NSOperations. Cependant, je n'arrive pas à trouver de la documentation définitive sur cette question, alors je me demandais si quelqu'un pouvait point où c'est indiqué.
- À partir de la réponse posté par @Gustavo Ambrozio qui a été supprimé, documentation est ici, dans le cas où les téléspectateurs sont intéressés.
Vous devez vous connecter pour publier un commentaire.
Grand central dispatch aurez à gérer un autorelease pool par la file d'attente automatiquement. Cependant, il n'existe aucune garantie que lorsque la piscine sera drainé; il peut être après un bloc est traitée, elle peut être après des centaines (mais ne sera probablement pas).
Donc, si vous êtes seulement de l'allocation de quelques objets, ne vous inquiétez pas à ce sujet. Toutefois, si vous êtes affectation d'un nombre important d'objets (et puisque vous ciblez un environnement de contrainte de mémoire), alors vous devriez être en train de créer et de vidange des piscines.
La documentation a été mise à jour.
Voir
https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1
autorelease
).