关于自动引用计数,我需要了解啥?

Posted

技术标签:

【中文标题】关于自动引用计数,我需要了解啥?【英文标题】:What do I need to know about Automatic Reference Counting?关于自动引用计数,我需要了解什么? 【发布时间】:2012-02-12 06:12:24 【问题描述】:

我有一个应用程序正在更新到最新版本的 Xcode,但遇到多个与自动引用计数 (ARC) 相关的错误。

错误要求我调用例如autorelease 并调整我编写的其他处理内存管理的代码。

Clang documentation 内容如下:

[ARC] 不提供循环收集器;用户必须明确地管理生命周期。

...这让我很紧张。过去,我一直被 Objective-C 内存管理问题所困扰,并且一直在为我的代码中的每个 retainreleaseautorelease 辩护。

现在 ARC 呼吁我在改变我的内存管理语义方面大踏步前进。要树立对 ARC 内存管理的信心,我需要知道什么?

【问题讨论】:

【参考方案1】:

命名约定。修复每个静态分析器问题,并确保您的命名清晰且符合约定——这现在用作与编译器的通信。现在,这确实没有必要,但最好删除所有编译器和检查器警告,测试,确保您对命名感到满意,然后转换。这也意味着提高警告级别并解决问题。

避免使用属性详情请点击此处:Deep copy of dictionaries gives Analyze error in Xcode 4.2

“避免属性”中的示例展示了类型安全、描述性方法名称以及确保您在翻译中包含您使用的内容并使用严格的选择器匹配的重要性。选择:-Wstrict-selector-match。当你执行不安全的转换时,类型安全也会出现——很有可能,你需要在程序的某些部分通过特殊的强制转换来引入类型安全。

对非托管类型的悬空引用。在这里看到:Assigning an existing CGColor to a CGColor property works in ios Simulator, not iOS device. Why?

[ARC] 不提供循环收集器;用户必须明确地管理生命周期。

这是指强循环引用(例如,相互依赖的对象)。这些将存在于您的旧程序中。仪器可以帮助您检测它们。

完成转换后,准备测试几个操作系统版本。

祝你好运!


附加:

What are the advantages and disadvantages of using ARC?

【讨论】:

以上是关于关于自动引用计数,我需要了解啥?的主要内容,如果未能解决你的问题,请参考以下文章

关于此代码的引用计数的问题

unity啥情况下gc不能自动回收垃圾对象

自动引用计数混淆

Swift学习笔记-自动引用计数弱引用和无主引用

Swift学习笔记-自动引用计数弱引用和无主引用

云计算Python自动化:内部的引用计数