1
AntiGameZ 2012-01-17 12:10:51 +08:00
这么说,应该是“目前不开启ARC的几个理由吧”
|
3
Echoldman 2012-01-17 12:28:48 +08:00
确实,我也觉得ARC是给多年经验的人用的,新手肯定是驾驭不了
|
4
ultragtx 2012-01-17 12:29:08 +08:00
貌似是无论从效率还是各种方面考虑都没有什么理由不用ARC,虽然我至今没在项目中用过
对于第一条,ARC要想用好肯定还是要先搞明白引用计数机制,所以不是鄙视你的智商 第二条,有参数可以对单个文件禁用arc 第三条,ARC应该已经彻底取代了GC,至少官方是这么认为的 |
6
wtl 2012-01-17 13:36:24 +08:00
编译期自动加入release没那么复杂
目前所有项目均已开启arc 第三方library反正可以直接用 如果蛋疼也可以帮它开启 |
7
levey 2012-01-17 13:59:51 +08:00
我还是自己release比较有谱。。。
|
8
lldong 2012-01-17 14:11:57 +08:00
话说ARC在效率上也会有提升,一些原来通过发送消息做的事情会直接通过运行时API的函数去做(比如-release对应的objc_release()函数),按官方的说法效率会提升不少。
针对第三方的代码可以设置为编译时不使用ARC,所以应该也没多大问题。 |
9
fly2never 2012-01-17 14:34:20 +08:00
现在的项目手动管理内存运行的还不错,不太想换...
|
10
linlinqi 2012-01-17 14:41:42 +08:00
1. 我觉得ARC对新人来说反而简单了,你看他都不用手动release, retain
2. 第三方代码加上不使用ARC的标记很简单 |
11
acwind 2012-01-17 16:32:49 +08:00
最近的一个项目心血来潮使用了 ARC,然后发现第三方的库报错,还要一个一个对那些不支持的库文件手动关掉 ARC 的支持。
不过用下来还是很省心,代码呼哧呼哧一口写下来不用操心太多。不像以前总是要算算计一下什么时候该 release,是否要弄个 auteorelease,现在都不用关心了,哈哈…… 感觉还不错,觉得以后越来越多的项目都会逐渐开始使用 ARC 了吧…… |
12
ohsc 2012-01-17 21:54:42 +08:00
公司产品还需要支持iOS4,目前还是手动release吧。
|
14
hiessu 2012-01-17 22:52:04 +08:00
应该尽可能多的使用ARC,第三方的库加参数不用ARC编译就好了。少写代码的感觉就是舒心,而且论效率绝对不输手动管理。
|
16
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
|
17
changx 2012-01-18 01:51:08 +08:00
手动 retain/release 的时候已经有一种快感了,囧
|
18
blogcool 2012-01-18 08:58:19 +08:00
对于第三方代码或库 xcode可以转成支持arc,或手动添加禁用标记
|
20
stcui 2012-01-18 09:22:31 +08:00
第三方代码可以先打成静态库再链接到程序里
|
21
soulhacker 2012-01-18 10:08:13 +08:00
1. 我会建议新手先学习正常的内存管理达到比较熟练,然后可以开始使用ARC;
2. 第三方库可以隔离,而且慢慢也越来越多支持了; 3. 这个太莫须有了吧… |
22
feilaoda 2012-01-18 18:45:08 +08:00
@soulhacker 这个不一定哦,学java一般情况都不太需要考虑内存管理
ARC是趋势,而且比GC好 |
23
soulhacker 2012-01-18 19:01:15 +08:00 via iPhone
@feilaoda 你说的原理上都对,但实际上有很多麻烦是没法现在就完全依赖于 ARC 的,所以…
|
24
feilaoda 2012-01-18 20:10:04 +08:00
@soulhacker 愿闻其详
|
25
elden 2012-01-18 20:21:23 +08:00
ARC还不能完全取代GC,比如还存在可能造成循环引用,导致泄漏的情况。
|
27
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,我只是说目前阶段,如果可能的话先熟悉再用会更好些。 |