IOS 5 SDK中的Objective C 2.0垃圾收集器VS自动参考计数器

kku*_*rni 7 garbage-collection objective-c ios automatic-ref-counting

只是想知道是否有人知道Objective C 2.0垃圾收集器和IOS 5 SDK中的新自动参考计数器有什么不同?

IOS 5 SDK也使用Objective C 2.0吗?

注意:我的意思是客观的C 2.0 - 我从这个链接http://theocacao.com/document.page/510看到了

谢谢

jus*_*tin 13

只是想知道是否有人知道Objective C 2.0垃圾收集器和IOS 5 SDK中的新自动参考计数器有什么不同?

ARC不是垃圾收集器.最好将其视为由编译器添加的手动引用计数(保留/释放/自动释放)调用.它还使用了一些运行时技巧.

如果您对Apple系统上的ObjC完全不熟悉:所有Apple的Objective-C类型都使用引用计数,但现在有多种变体.在ARC之前和GC之前,我们使用的都是手动参考计数(MRC).使用MRC,您将明确保留和释放您的对象.MRC对某些人来说很难,特别是那些花很少时间明确管理记忆的人.因此,对更简单系统的需求随着时间的推移而增长.MRC程序还要求您编写大量的内存管理代码,这可能会变得乏味.

见布拉德的出色答卷这里的一些更多的细节.

IOS 5 SDK也使用Objective C 2.0吗?

是的,但是 ObjC垃圾收集器不是iOS上的选项.


Jam*_*ter 8

注意:iOS上没有垃圾收集功能,但根据我的评论,ARC可在Mac OSX 10.6+上使用.然而,差异仍然具有可比性.

使用自动引用计数,一旦超出范围,对象仍然会被释放.

使用垃圾收集,对象可以保留在内存中,直到垃圾收集器执行下一次扫描并找到不再具有引用的对象.