不开启ARC的几个理由

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

大家认为呢?
7809 次点击
所在节点    iDev
27 条回复
soulhacker
2012-01-18 10:08:13 +08:00
1. 我会建议新手先学习正常的内存管理达到比较熟练,然后可以开始使用ARC;
2. 第三方库可以隔离,而且慢慢也越来越多支持了;
3. 这个太莫须有了吧…
feilaoda
2012-01-18 18:45:08 +08:00
@soulhacker 这个不一定哦,学java一般情况都不太需要考虑内存管理
ARC是趋势,而且比GC好
soulhacker
2012-01-18 19:01:15 +08:00
@feilaoda 你说的原理上都对,但实际上有很多麻烦是没法现在就完全依赖于 ARC 的,所以…
feilaoda
2012-01-18 20:10:04 +08:00
@soulhacker 愿闻其详
elden
2012-01-18 20:21:23 +08:00
ARC还不能完全取代GC,比如还存在可能造成循环引用,导致泄漏的情况。
wtl
2012-01-18 20:35:43 +08:00
@elden GC从来没有被苹果当回事......
soulhacker
2012-01-19 10:39:31 +08:00
@feilaoda 简单说说:

1. GC 和 ARC 原理差别很大,ARC 类似于自动代码生成,对于几乎所有自动代码生成机制,程序员最好能了解其生成的原理,这样应对一些奇怪问题时会有帮助;GC 则是 VM 的工作,一般的程序员(除非你做 VM 的)确实不需要了解。
2. 如果使用 Core Foundation 里的库,开启 ARC 需要大量的手工代码检查和确认工作,所以很多用了 CFNetwork、CoreText 等框架的程序员暂时会选择保留遗留代码,不用 ARC(当然也可以 per-file 设置,但管理起来还是有点麻烦)。
3. 相当数量的 app 还要支持 iOS 4 以下的版本,目前 Apple 不支持在这些版本上开启 ARC。

最后,我并不是说一定要熟悉内存管理原理之后才能用 ARC,我只是说目前阶段,如果可能的话先熟悉再用会更好些。

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

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

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

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

© 2021 V2EX