Est-il nécessaire de créer un pool autorelease sous ARC dans GCD?

J'ai une méthode de boucle d'exécution pour un CAEAGLLayer qui utilise GCD pour sérialiser l'access aux ivars partagés.

Mon code de dessin est actuellement construit comme ceci:

- (void)draw { dispatch_sync(serialDrawingQueue, ^{ @autoreleasepool { [self drawingStart]; [spriteA draw]; [spriteB draw]; [self drawingEnd]; } }); } 

La méthode draw est appelée par un CADisplayLink. Le @autoreleasepool est- @autoreleasepool nécessaire lorsque j'utilise des blocs GCD?

À partir des documents Apple :

Si votre bloc crée plus de quelques objects Objective-C, vous pouvez inclure des parties du code de votre bloc dans un bloc @autorelease pour gérer la memory management de ces objects. Bien que les files d'attente de répartition GCD aient leurs propres pools de libération automatique , elles ne garantissent pas le moment où ces pools sont vidés. Si votre application est limitée en memory, la création de votre propre pool de libération automatique vous permet de libérer de la memory pour les objects autoreleased à des intervalles plus réguliers.

Il semble que dans iOS10 ou supérieur, les files d'attente d'expédition n'entourent plus les blocs par défaut dans @autoreleasepool . Ceci est indiqué par les macros DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL et DISPATCH_QUEUE_CONCURRENT_WITH_AUTORELEASE_POOL définies dans queue.h