你需要在iOS 6.0下的ARC下发布GCD队列吗?

ner*_*k99 20 xcode grand-central-dispatch ios automatic-ref-counting

在关于Paul Hegarty课程的iOS 5教程之后,我们在一个演示使用GCD的应用程序中看到了这个代码.显然GCD需要发布,因为与多线程有关的问题在仍然需要什么对象方面有些不可预测.

  dispatch_async(dowloadQueue, ^{
    ....
    // do some stuff
   ....
    });
  dispatch_release(dowloadQueue);
Run Code Online (Sandbox Code Playgroud)

我已升级到iOS 6和XCode 4.5,我收到"ARC forbids explicit release ..."消息

我没有在iOS5/XCode 4.2下尝试这个代码

这只是因为ARC更聪明,我不再需要在GCD中释放?或者我只是误解了?

Bra*_*son 29

当您定位Mountain Lion和iOS 6.0时,ARC现在将为您管理调度队列和其他GCD类型.如果你的目标是早期版本的OS X或iOS,你仍然需要明确地保留和释放GCD类型(不仅仅是出于线程安全的原因,否则你会泄漏内存),但是当你只针对新的操作系统时,这是为你处理的.版本.

这就是为什么在针对iOS 6.0时在ARC下看到这样的编译器错误的原因.

  • @MurraySagal不起作用,因为这是编译器错误消息,而不是运行时错误. (2认同)