iOS目标5和iOS目标6之间的编译差异

iOS目标5和iOS目标6之间的编译差异,ios,objective-c,iphone,xcode,automatic-ref-counting,Ios,Objective C,Iphone,Xcode,Automatic Ref Counting,我的iOS应用程序是用iOS 5 SDK编写的。当我按照苹果的要求切换到更新版本的SDK时,iOS目标版本5从未被修改过。 有了新的SDK(9),我无法用旧的设置编译它,我正试图切换到一个新的目标。(6,7,8,9,我得到同样的问题)。该应用程序有混合代码,有些文件使用ARC,有些不使用。当我切换到较新的操作系统目标时,我会遇到许多关于ARC的错误,主要是关于调度队列管理(调度保留/调度释放)。如果我添加-fno objc arc,应用程序就会崩溃;如果我删除dispatch\u retain/

我的iOS应用程序是用iOS 5 SDK编写的。当我按照苹果的要求切换到更新版本的SDK时,iOS目标版本5从未被修改过。 有了新的SDK(9),我无法用旧的设置编译它,我正试图切换到一个新的目标。(6,7,8,9,我得到同样的问题)。该应用程序有混合代码,有些文件使用ARC,有些不使用。当我切换到较新的操作系统目标时,我会遇到许多关于ARC的错误,主要是关于调度队列管理(调度保留/调度释放)。如果我添加-fno objc arc,应用程序就会崩溃;如果我删除dispatch\u retain/release调用,应用程序就会崩溃。我的问题是:

  • 有人知道iOS 5和iOS 6之间SDK编译重新分级弧中发生了什么变化吗?
  • 有任何关于如何前进的建议吗?是否有一种方法可以使arc保持启用状态,但告诉编译器允许手动处理调度队列?
  • 没什么大不了的
  • 无论如何,您都必须手动管理队列。ARC与dispatch_*交互的唯一方式是使用块。很可能这一直是个问题,新编译器中的优化会暴露它
  • 如果没有看到代码,就很难提出任何具体的建议。一般来说,我倾向于在应用程序启动时设置一个队列,而从不释放它。试图找到合适的时间来保留/释放队列感觉就像是一个我不需要处理的问题