iOS开发是否应该使用ARC?

移动开发 iOS
关于ARC的介绍文章网上已经很多,苹果的官方文档也不少。担心使用ARC会带来问题的同学主要的理由有以下5点:1.担心这个技术方案不靠谱;2.原有的项目在非ARC环境下运行良好,担心迁移至ARC环境下运行出错。

和身边做iOS开发的同事组建了一个QQ群,每隔一段时间,大家就会讨论是否应该使用ARC。所以我觉得有必要将这些讨论分享出来,让大家消除对于ARC的疑虑。

关于ARC的介绍文章网上已经很多,苹果的官方文档也不少。担心使用ARC会带来问题的同学主要的理由有以下5点:

1.担心这个技术方案不靠谱。苹果大多数时候的技术方案都是比较靠谱的,但也有一些技术方案有很多坑,例如storyboard。关于storyboard的问题可以参看我的这篇文章。
2.原有的项目在非ARC环境下运行良好,担心迁移成本或引入新的问题。
3.苹果以前手工管理内存需要非常小心,稍微不注意应用程序就崩溃了。有过这段经历的iOS开发老手,心里上还是觉得自己手工管理内存更踏实一些。
4.使用ARC需要了解ARC的一些细节,还需要引入_bridge等新的关键字,学习成本还是有的。
5.以为ARC只能支持iOS5.0以上(这是非常大的误解)。
对于上面提到5点问题,我认为相应的回答如下:

1.ARC是WWDC2011大会时提出的技术,离现在已经快2年了,而且苹果现在将MacOS上的垃圾回收机制废弃(Deprecated),采用ARC替代,无疑证明了ARC是成熟的了。
2.确实有一些迁移成本,但苹果在Xcode中专门集成了迁移工具,成本已经非常小了。如下图就是Xcode集成的将非ARC工程转换成ARC工程的工具。另外,为了兼容第三方的非ARC开源库,你也可以在工程中随意使用编译参数:-fno-objc-arc ,这个参数允许对部分文件关闭ARC。
3.手工管理内存虽然踏实,但是泄露很容易发生。常常开发完成后,需要使用Instruments来检测泄露。但用了ARC后,基本不会出现泄露了,我在 开发粉笔网iPhone客户端时,由于使用了ARC,花三个月开发完的应用,用instruments检测后,没有发现任何内存泄漏问题。这在没有使用 ARC的工程中是不可想象的。
4.确实有学习成本。但是非常值得学习,能省不少开发精力。
5.虽然ARC是与iOS5一同推出,但是由于ARC的实现机制是在编译期完成,所以使用ARC之后App仍然可以支持iOS4.3。稍微需要注意的是, 如果要在ARC开启的情况下支持iOS4.3,需要将weak关键字换成 __unsafe_unretained,另外还有一些细节需要处理,在这里我就不展开说了。

所以,希望大家都能在项目中使用ARC,一旦你感受到它带来的好处,你就离不开它了。它也能让你从繁琐的内存管理代码中解放出来,将精力更多关注于代码结构、设计模式而不是底层的内存管理。

责任编辑:闫佳明 来源: blog.devtang
相关推荐

2012-01-18 13:46:37

ARCiOS

2012-01-18 10:57:37

ARCiOS

2013-09-30 09:49:06

存储网络FCoE存储

2011-11-09 10:40:39

2012-08-03 10:36:29

2014-10-11 10:20:50

程序员

2012-11-01 16:56:06

2011-08-08 13:26:48

iOS开发 Twitter

2013-07-22 14:33:15

iOS开发ASIHTTPRequ

2013-07-22 14:15:17

iOS开发ASIHTTPRequ

2014-06-13 11:06:36

RoboVMiOS应用

2013-03-25 13:41:10

iOS5ARC内存管理

2013-07-03 10:48:58

设计师iOS应用iOS人机交互

2021-06-16 09:10:29

APP开发AndroidiOS

2013-06-05 09:22:51

网络服务NaaS

2018-07-09 14:05:16

编程语言PythonPipenv

2013-07-22 13:48:55

iOS开发ASIHTTPRequ使用Cookie

2013-12-17 11:04:10

iOS开发传感器

2014-07-16 08:57:41

iOS 8 API

2015-03-16 10:00:40

iOSARCMRC
点赞
收藏

51CTO技术栈公众号