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

时间:2012-10-04 15:02:30

标签: ios xcode automatic-ref-counting grand-central-dispatch

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

  dispatch_async(dowloadQueue, ^{
    ....
    // do some stuff
   ....
    });
  dispatch_release(dowloadQueue);

我已升级到iOS 6和XCode 4.5,我得到了一个      “ARC禁止明确释放......”消息

我没有在iOS5 / XCode 4.2下试用这段代码

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

1 个答案:

答案 0 :(得分:29)

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

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