【问题标题】:Can I not use ARC if app has to be comptible with mac os x 10.5 onwards? [duplicate]如果应用程序必须与 mac os x 10.5 及更高版本兼容,我可以不使用 ARC 吗? [复制]
【发布时间】:2013-02-03 21:49:06
【问题描述】:

可能重复:
How to deploy to Snow Leopard with ARC enabled

引用 Hillegas Book on Cocoa Programming for Max OS X 的内存管理章节

在 Mac OS 10.7 和 iOS 5 中引入的新解决方案是自动引用计数,通常称为 ARC。 ARC 依赖于原始的保留计数机制,但有一个转折点:编译器会为您管理保留计数的簿记。

我正在编写一个 Max OS X 应用程序,它必须与 10.5 及更高版本兼容,直到 10.8。因此,基于上述内容,我的理解是,如果 ARC 在 10.7 中引入,这是否意味着如果我使用 ARC 在 10.7 平台上构建我的应用程序,该应用程序将无法在 10.5 和 10.6 上运行?因为 ARC 功能是在 10.7 中引入的

如果应用必须兼容 10.5/6/7/8,我应该使用什么内存管理

另外可能很重要的是,我的后端主要是 C++(我知道我必须自己管理 C++ 内存,而不是依赖 ARC)和 Objective-C 的前端

我的开发平台是 10.7 Lion / Xcode 4.3

前辈请多指教。

编辑 从 cmets 我了解到 ARC 也依赖于运行时支持,这基本上意味着它不适合我的情况。无论如何,10.5也不支持它,所以我应该进行手动内存管理吗?

【问题讨论】:

  • 密切相关,可能会回答您的问题:ARC on older versions of iOS and OS X
  • 好的,如果 ARC 也需要运行时,有什么建议,手动内存管理?
  • @Ahmed:我会使用 MMR。您可以使用 GC,但它在 OS X 10.8 上已被正式弃用,因此如果您想将 10.5 定位到 10.8,最好的选择是使用 MMR。
  • 即使我有我的答案,我很惊讶为什么它被认为是重复的,我的最低部署平台是 10.5 'Leopard' 而不是 'snow Leopard' 根据此页面上的答案 ARC 根本不支持'飞跃' 。这是一个重复的问题??? !这个问题是关于“确实支持某种 ARC 的 Snow Leapord”

标签: objective-c cocoa


【解决方案1】:

我会选择MRR。

ARC 的任何部分都不适用于 10.6 之前的 OS X 版本。清零弱引用需要 10.7。

请参阅 Apple ARC 可用性矩阵here

Xcode 4.2 的 Snow Leopard 版本在 OS 上根本不支持 ARC X,因为它不包含 10.7 SDK。雪豹的 Xcode 4.2 不过确实支持 ARC for iOS,而 Xcode 4.2 for Lion 两者都支持 OS X 和 iOS。这意味着您需要一个 Lion 系统来构建 ARC 在 Snow Leopard 上运行的应用程序。

【讨论】:

    【解决方案2】:

    ARC 是一种 SDK 功能,只要您使用 10.7+ SDK 进行编译,大多数功能都可以在较旧的操作系统上使用。

    相关:How to deploy to Snow Leopard with ARC enabled

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

    哦,仅限 10.6 及更高版本。不支持 Leopard。

    【讨论】:

    • 那么鉴于我的应用程序部署需求,建议是手动内存管理吗?
    • ARC 不仅仅是 SDK 功能,还需要一个库 (ARCLite)。 iOS 5.0 和 Mac OS X 10.7(及更高版本)包含这些功能。
    • 我会使用 MMR,GC 已正式弃用,但 MMR 始终是一种选择。
    • 对于 10.7 之前的 OS X,我也会使用 MMR。
    猜你喜欢
    • 2011-04-13
    • 2010-11-20
    • 1970-01-01
    • 2018-10-14
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2012-03-16
    相关资源
    最近更新 更多