关于ios应用程序转成ARC模式
2014-01-17 10:37
225 查看
记录将手动管理模式转换成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;
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;
相关文章推荐
- ios中关于使用arc,并且使用了ASIhttp请求较多发生崩溃问题的解决
- 检测iOS Web应用程序是否运行在全屏模式
- IOS ARC模式下图片上传到FTP的详解
- IOS学习 关于ARC的在block块中的引用
- iOS 关于 设计模式 与网友讨论实录
- iOS SandBox 之关于应用程序沙盒
- iOS边练边学--iOS中的(ARC下)单粒模式(GCD实现)
- Ios中关于IB简介、视图、以及设计模式相关知识
- 关于iOS六大基本设计模式
- 理解iOS的应用程序的MVC架构模式
- 关于ios发布应用程序上传之后invalid binary 解决方法
- iOS开发多线程篇—单例模式(ARC)
- 关于IOS密码框文字切换模式导致光标不在文字末尾问题
- iOS开发多线程篇—单例模式(ARC)整理小料
- 黑马程序员————IOS学习笔记 第12篇 关于单例设计模式的认识
- 关于DEBUG模式下,"应用程序正常初始化 0xc00150002 失败,终止应用程序"问题解决思路
- ios:关于ARC的初步学习
- 关于iOS六大基本设计模式
- IOS单例模式(MRC下和ARC下)