【问题标题】:How to deploy to Snow Leopard with ARC enabled如何在启用 ARC 的情况下部署到 Snow Leopard
【发布时间】:2011-12-03 12:23:53
【问题描述】:

我有一个想要迁移到 ARC 的 OSX 应用程序。如果我将基本 SDK 设置为 10.7,一切正常。但是当我将它设置为 10.6 时它不起作用(因为它没有找到 _objc_release 等)。那么如何在启用 ARC 的情况下将我的应用部署到 10.6?

【问题讨论】:

    标签: cocoa osx-snow-leopard automatic-ref-counting


    【解决方案1】:

    您将 SDK 设置为 10.7,但将部署目标设置为 10.6。

    记住:

    虽然可以使用 ARC 构建在 Mac OS X 10.6 和 iOS 4 上运行的程序,但在这些操作系统上无法使用归零弱引用。所有弱引用都必须在这里 __unsafe_unretained。因为非归零弱引用非常危险,所以在我看来,这种限制会显着降低 ARC 在这些操作系统上的吸引力。

    来源:Automatic Reference Counting

    【讨论】:

    • 10.6 和 iOS 4.0 是最早的平台,但正如 catlan 所指出的,ARC 在那里有严格的限制。 10.7 和 iOS 5 是最早可以完整运行 ARC 的平台。我想我会为我们的 10.6 部署使用 ARC,因为它是新的,因为您可以基于每个文件禁用 ARC。
    • 我的 2 美分:在不知道它们是否已发布的情况下访问引用(使用 __weak 功能)对我来说似乎有点奇怪。您应该知道对象的生命周期,如果您不拥有要向其发送消息的对象,则更应了解。对我个人而言,没有 __weak 不是问题。在 ARC 之前,您也不会在不知道您不拥有的对象是否仍然存在的情况下向对象发送消息。 IMO(除了少数例外)这是一种糟糕的编码习惯。
    • Joris:__weak 用于反向指针。否则你会得到保留圈。为此,它比依靠每个人手动将其参考归零要安全得多。但是,是的,在大多数其他情况下,这绝对是代码异味。
    【解决方案2】:

    您可能会发现 PLWeakCompatibility 很有用。它允许您在 iOS 4 和 OS X 10.6 上使用 __weak 变量。

    这里的源代码:https://github.com/plausiblelabs/PLWeakCompatibility
    更多信息http://www.mikeash.com/pyblog/introducing-plweakcompatibility.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多