4

一位前开发人员为我们的组织构建了一个编写良好的 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 Automatic Reference Counting 设置为 YES。

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

4

2 回答 2

7

好吧,该参数必须设置为YES,可能代码到处泄漏。

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

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

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

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

于 2013-06-17T18:33:15.700 回答
0

您提到了 LLVM 3.0。这意味着您可能正在将您的应用程序部署到 iOS 4。如果是这样,请注意 ARC 在 iOS 4 中有一个限制,称为“ ARClite ”:弱引用不会自动归零(nil'd out)。您需要在您的代码中明确地将它们归零。在实践中,这意味着消除网点。

Apple 文档:Objective-C 功能可用性索引

于 2013-08-15T11:00:09.117 回答