我有一个应用程序我正在更新到最新版本的Xcode,并且遇到了与自动引用计数(ARC)相关的多个错误。
这些错误让我拨打电话,例如autorelease
,并调整我编写的处理内存管理的其他代码。
[ARC]不提供循环收集器;用户必须明确管理生命周期。
......这让我非常紧张。我过去曾被Objective-C内存管理问题所困扰,并且在我的代码中为每个retain
,release
和autorelease
辩护。
现在,ARC正在呼吁我改变我的内存管理语义。为了建立对ARC内存管理的信心,我需要知道什么?
答案 0 :(得分:7)
命名约定。修复每个静态分析器问题并确保您的命名清晰并符合约定 - 这现在用作与编译器的通信。现在,这确实没有必要,但最好删除所有编译器和检查器警告,测试,确保您对命名感到满意,然后转换。这也意味着提高警告级别并解决问题。
避免属性详细信息: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]不提供循环收集器;用户必须明确管理生命周期。
这指的是强循环引用(例如,依赖于对象的对象)。这些将存在于您的旧程序中。仪器可以帮助您检测它们。
完成转换后,请准备好测试多个操作系统版本。
祝你好运!
附加功能: