是否有必要在GCD中的ARC下创建自动释放池?

Pro*_*ber 5 concurrency memory-management grand-central-dispatch ios automatic-ref-counting

我有一个CAEAGLLayer的运行循环方法,它使用GCD序列化对共享ivars的访问.

我的绘图代码目前是这样构造的:

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

            [spriteA draw];
            [spriteB draw];

            [self drawingEnd];
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

draw方法由CADisplayLink调用.@autoreleasepool我使用GCD块时是否必要?

Jus*_*Sid 21

来自Apple文档:

如果您的块创建了多个Objective-C对象,您可能希望将块的代码部分包含在@autorelease块中,以处理这些对象的内存管理.尽管GCD调度队列具有自己的自动释放池,但它们无法保证这些池何时耗尽.如果您的应用程序受内存限制,则创建自己的自动释放池允许您以更加规则的间隔释放自动释放对象的内存.