objective-c - 关于自动引用计数,我需要了解什么?

标签 objective-c xcode memory-management automatic-ref-counting clang

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

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

Clang documentation阅读:

[ARC] does not provide a cycle collector; users must explicitly manage lifetime instead.

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

现在,ARC 要求我在改变我的内存管理语义方面实现信心的飞跃。我需要知道什么才能建立对 ARC 内存管理的信心?

最佳答案

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

避免属性 详细信息在这里: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] does not provide a cycle collector; users must explicitly manage lifetime instead.

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

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

祝你好运!


额外内容:

What are the advantages and disadvantages of using ARC?

关于objective-c - 关于自动引用计数,我需要了解什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9246874/

相关文章:

objective-c - 以编程方式将 NSTableCellView 和 subview 设置为具有动态宽度

ios - 在设备方向更改时在 UiView 中居中 UIActivityIndi​​catorView

iphone - 如何获取当前显示为 NSString 的 View ?

iphone - 如何获取App中没有的图片

memory-management - 为什么访问未映射的位置不会产生硬件异常 (Microblaze)

ios - 获取姓名和号码联系人列表地址簿

objective-c - 更改 UIWebView 文本的大小

iphone - iOS 界面方向

ios - swift 中 pch 的替代品是什么?

c - 为具有结构作为值的节点分配内存