Cocoa 如何在启用ARC的情况下部署到雪豹

Cocoa 如何在启用ARC的情况下部署到雪豹,cocoa,osx-snow-leopard,automatic-ref-counting,Cocoa,Osx Snow Leopard,Automatic Ref Counting,我有一个OSX应用程序,我想迁移到ARC。如果我将基本SDK设置为10.7,一切正常。但当我将其设置为10.6时,它就不起作用了(因为它找不到_objc_release等等)。那么,如何在启用ARC的情况下将应用程序部署到10.6?您将SDK设置为10.7,但部署目标设置为10.6 请记住: 虽然可以使用运行在Mac OS X 10.6和iOS 4上的ARC构建程序,但在这些操作系统上无法使用零弱引用。所有弱引用都必须在此处不安全。因为非归零弱引用非常危险,所以在我看来,这种限制大大降低了ARC

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

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

请记住:

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


来源:

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

此处的源代码:

10.6和iOS 4.0上的更多信息是最早的平台,但正如catlan所指出的,ARC在这方面有着严格的限制。10.7和iOS 5是ARC可以整体运行的最早平台。我想我会选择ARC作为我们的10.6部署,因为它是新的,因为您可以在每个文件的基础上禁用ARC。我的2美分:访问引用时不知道它们是否已发布(使用_弱功能)对我来说似乎有点奇怪。你应该知道你的对象的生命周期,如果你不拥有你要发送消息的对象,你应该知道更多。对我个人来说,没有软弱不是问题。在ARC之前,您也不会在不知道您不拥有的对象是否仍然存在的情况下向对象发送消息。IMO(除了少数例外)这是一种糟糕的编码实践。否则你会得到一个圆圈。因此,这比依靠每个人手动清除他们的引用要安全得多。但是,在大多数其他情况下,这肯定是一种代码气味。