不开启ARC的几个理由

2012-01-17 12:08:16 +08:00
 surf
1.原生基于引用计数的内存管理方法已经很高效和简洁了,ARC认为一个程序员连着都搞不定,这不是BS我的智商么 (当然ARC只是为了让程序员能够考虑得更上层一些)
2.大部分第三方库不支持
3.ARC本身并不完善 ------这个不完善是我自己猜的,很难想象有这么一种机制能够完全替代掉GC又有接近手动管理内存的效率,ARC是否好用还需要时间考验

大家认为呢?
7796 次点击
所在节点    iDev
27 条回复
AntiGameZ
2012-01-17 12:10:51 +08:00
这么说,应该是“目前不开启ARC的几个理由吧”
surf
2012-01-17 12:12:54 +08:00
@AntiGameZ 要标题党一下 娃哈哈
Echoldman
2012-01-17 12:28:48 +08:00
确实,我也觉得ARC是给多年经验的人用的,新手肯定是驾驭不了
ultragtx
2012-01-17 12:29:08 +08:00
貌似是无论从效率还是各种方面考虑都没有什么理由不用ARC,虽然我至今没在项目中用过
对于第一条,ARC要想用好肯定还是要先搞明白引用计数机制,所以不是鄙视你的智商
第二条,有参数可以对单个文件禁用arc
第三条,ARC应该已经彻底取代了GC,至少官方是这么认为的
surf
2012-01-17 12:44:37 +08:00
@ultragtx 第一条纯属调侃 =。=
第二条操作起来并不是这么简单
第三条的话还是要看未来表现了
wtl
2012-01-17 13:36:24 +08:00
编译期自动加入release没那么复杂

目前所有项目均已开启arc
第三方library反正可以直接用
如果蛋疼也可以帮它开启
levey
2012-01-17 13:59:51 +08:00
我还是自己release比较有谱。。。
lldong
2012-01-17 14:11:57 +08:00
话说ARC在效率上也会有提升,一些原来通过发送消息做的事情会直接通过运行时API的函数去做(比如-release对应的objc_release()函数),按官方的说法效率会提升不少。

针对第三方的代码可以设置为编译时不使用ARC,所以应该也没多大问题。
fly2never
2012-01-17 14:34:20 +08:00
现在的项目手动管理内存运行的还不错,不太想换...
linlinqi
2012-01-17 14:41:42 +08:00
1. 我觉得ARC对新人来说反而简单了,你看他都不用手动release, retain
2. 第三方代码加上不使用ARC的标记很简单
acwind
2012-01-17 16:32:49 +08:00
最近的一个项目心血来潮使用了 ARC,然后发现第三方的库报错,还要一个一个对那些不支持的库文件手动关掉 ARC 的支持。
不过用下来还是很省心,代码呼哧呼哧一口写下来不用操心太多。不像以前总是要算算计一下什么时候该 release,是否要弄个 auteorelease,现在都不用关心了,哈哈……
感觉还不错,觉得以后越来越多的项目都会逐渐开始使用 ARC 了吧……
ohsc
2012-01-17 21:54:42 +08:00
公司产品还需要支持iOS4,目前还是手动release吧。
wtl
2012-01-17 22:12:32 +08:00
@ohsc arc不是gc,只是在编译期帮你添加release,iOS4一样可以跑
hiessu
2012-01-17 22:52:04 +08:00
应该尽可能多的使用ARC,第三方的库加参数不用ARC编译就好了。少写代码的感觉就是舒心,而且论效率绝对不输手动管理。
hiessu
2012-01-17 22:55:17 +08:00
@Echoldman 你根本不需要学ARC的机制,直接用就好了,就这么简单。
@ohsc 用ARC,iOS4一样跑~
hiessu
2012-01-17 23:04:01 +08:00
@hiessu 再补充一下吧,ARC方式下的iOS4、iOS5还是有差别的。ARC的机制看一下这两篇~ http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1 和 2
changx
2012-01-18 01:51:08 +08:00
手动 retain/release 的时候已经有一种快感了,囧
blogcool
2012-01-18 08:58:19 +08:00
对于第三方代码或库 xcode可以转成支持arc,或手动添加禁用标记
ohsc
2012-01-18 09:13:04 +08:00
@hiessu @wtl 原来如此,我以为要ios5,回头尝试一下。
stcui
2012-01-18 09:22:31 +08:00
第三方代码可以先打成静态库再链接到程序里

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/25744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX