iOS ARC完成了吗?

时间:2013-06-17 18:29:39

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

前开发人员为我们的组织构建了一个编写良好的iPhone应用程序。在他退出后,另一位开发人员更新了自动引用计数(ARC)的应用程序。此开发人员已不在此处。我不相信他所做的事,因为他是一个不道德的开发者。我有15年的开发经验,但我是iPhone开发的新手。我需要知道我是否应该完整地保留他的更改。我仔细比较了他所做的改变。他只取出了dealloc函数并删除了'release','retain'和'autorelease'的使用。从我读过http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

您无法显式调用dealloc,也无法实现或调用retain,release,retainCount或autorelease。

这应该没问题。

然而,这篇文章

http://www.learn-cocos2d.com/2011/11/everything-know-about-arc/

提到

选择LLVM 3.0作为编译器,可以将Build Setting Objective-C自动引用计数设置为YES。

此设置仍设为NO。在我看来,代码已更新为使用ARC,但该项目未配置ARC。你能告诉我怎么继续吗?

2 个答案:

答案 0 :(得分:7)

那么,该参数必须设置为YES,可能代码在任何地方都在泄漏。

您可以使用分析仪检查项目是否泄漏(产品 - >分析)。

如果禁用ARC并从代码中删除版本,分析器将通知您代码正在泄漏,以及在哪里。

因此,启用ARC后,分析仪不会给您任何泄漏。

检查ARC是否被禁用或启用的另一种方法是在代码中使用release或autorelease。如果启用了ARC,您应该看到警告或错误。

答案 1 :(得分:0)

您提到了LLVM 3.0。这意味着您可能正在将应用程序部署到iOS 4.如果是这样,请注意ARC在iOS 4中有一个限制,称为“ARClite”:弱引用会自动清零(没事了)。您需要在代码中明确地将它们取消。在实践中,这意味着没有出口。

Apple文档:Objective-C Feature Availability Index