Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您是否需要在iOS 6.0中释放ARC下的GCD队列?_Ios_Xcode_Automatic Ref Counting_Grand Central Dispatch - Fatal编程技术网

您是否需要在iOS 6.0中释放ARC下的GCD队列?

您是否需要在iOS 6.0中释放ARC下的GCD队列?,ios,xcode,automatic-ref-counting,grand-central-dispatch,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禁止显式释放…”消息 我

在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中发布吗?
或者我只是误解了吗?

当您以Mountain Lion和iOS 6.0为目标时,ARC现在将为您管理调度队列和其他GCD类型。如果您以较早版本的OS X或iOS为目标,则仍然需要显式保留和释放GCD类型(不仅仅是出于线程安全原因,否则会导致内存泄漏),但这在仅以较新版本为目标时会为您处理


这就是为什么在针对iOS 6.0时,您会在ARC下看到这样一个编译器错误。

您是否需要在创建队列时将其传输到Objective-C?@openfrog-否,如果它被视为Objective-C对象,它已经由ARC处理,因此无需传输。@BradLarson有办法关闭它吗?或者,我如何编写它,使其在iOS 5和iOS 6下都能编译?@fishinear if(floor(NSFoundationVersionNumber)@MurraySagal这是一条编译器错误消息,而不是运行时错误,因此无法工作。