关于ios应用程序转成ARC模式

来源:互联网 发布:西门子plm软件 列表 编辑:程序博客网 时间:2024/04/29 07:56

记录将手动管理模式转换成ARC模式时的步骤,以及一些错误解决方法,注意:请先备份一份。

1.选择 Artists target, 在 Build Settings 选项卡中的搜索框中输入 “compiler”. 这样可以过滤列表,展示出编译选项:

2.点选 Compiler for C/C++/Objective-C 选项,修改它为 Apple LLVM compiler 3.0或以上: 

3.在 Warnings 头中,还要把 Other Linker Flags 设置为 -Wall。 这样编译器将会检测所有会导致问题,这样编译器将会检测所有会导致问题的情况。 默认情况下,这些警告消息是被关闭的,但是我发现总是把他们打开并且将每一个都看作是致命错误是很有用的。 换句话说, 如果编译器给出任何警告,我将会在继续其他工作之前修复它。 是否在你自己的项目中也这样做完全取决于你, 但是在转换到 ARC 的过程中, 我推荐你仔细看看编译器给出的每一个问题。

4.同样地, 也要在 Build Options 头中打开 Run Static Analyzer:Xcode 现在将会在每次构建项目的时候运行静态分析。 这会让构建的速度稍微慢一点, 但是作为我们这种规模的应用来说,这不算什么。让我们来构建一下应用, 看看新的编译器会给出什么问题. 首先我们用 Product -> Clean(或 Shift-Cmd-K) 进行一次清理。 然后按下 Cmd-B 来构建应用。 Xcode 应该不会收到任何警告。 如果你在将你自己的项目转换到 ARC, 并且收到了警告消息, 那么现在正是修复他们的时候。让我们把编译器切换到 ARC 模式,并且再次构建应用。

5.仍在 Build Settings 屏幕中, 切换到 “All” 可以看到所有可用的设置(Basic选项仅仅显示最常用到的设置)。 搜索 “automatic”, 设置 Objective-C Automatic Reference Counting 选项为 YES。 设置一个项目范围的标记, 用来告诉 Xcode 你将要用 ARC 编译器来编译你的项目中所有的源文件。

6.在迁移中大多数的错误都很明显,他们说的都是你不能再用 retain,release 和 autorelease 了。 我们可以完全手工的修正这些错误, 但是使用自动转换工具会更容易一些。 这个工具会用 ARC 模式来编译应用, 然后对每一个它遇到的错误的地方进行重写,直到项目不再报错。在 Xcode 菜单中, 选择 EditRefactorConvert to Objective-C ARC.。

7.转换中出现了一些错误如下:

error message is " init methods must return a type related to the receiver type" 

解决方法 你可能又init开始的方法 如initTable;改成xxInitTable;


property's synthesized getter follows cocoa naming convention for returning 'owned' objects

解决方法 你可能有new开始的方法 如newTable;改成xxNewTable;


'Existing ivar 'delegate' for unsafe_unretained property 'delegate' must be __unsafe_unretained

那是因为代码中存在:id _delegate;   或者    @property(nonatomic,assign)id delegate;



0 0