在关于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中释放? 或者我只是误解了?
答案 0 :(得分:29)
当您定位Mountain Lion和iOS 6.0时,ARC现在将为您管理调度队列和其他GCD类型。如果你的目标是早期版本的OS X或iOS,你仍然需要明确地保留和释放GCD类型(不仅仅是出于线程安全的原因,否则你会泄漏内存),但是当你只针对新的操作系统时,这是为你处理的。版本。
这就是为什么在针对iOS 6.0时在ARC下看到这样的编译器错误。