【问题标题】:Compilation differences between iOS target 5 and iOS target 6iOS target 5和iOS target 6的编译差异
【发布时间】:2015-12-29 05:40:26
【问题描述】:

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

  1. 有谁知道在 iOS 5 和 6 之间重新升级 ARC 的 SDK 编译发生了什么变化?
  2. 任何建议如何前进?有没有办法保持 arc 启用但告诉编译器允许手动处理调度队列?

【问题讨论】:

    标签: ios objective-c iphone xcode automatic-ref-counting


    【解决方案1】:
    1. 没什么大不了的。
    2. 无论如何,您都必须手动管理队列。 ARC 与 dispatch_* 交互的唯一方式是使用块。这可能一直是个问题,新编译器中的优化暴露了它。

    如果没有看到代码,很难提出任何具体的建议。一般来说,我倾向于在应用程序启动时设置一个队列并且从不释放它。试图找到合适的时间来保留/释放队列感觉就像一个我不需要处理的问题。

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 2011-07-23
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      相关资源
      最近更新 更多