您的位置:首页 > 移动开发 > Objective-C

iOS Objective-C 中是否支持垃圾回收机制

2017-08-26 21:04 288 查看
//联系人:石虎 
QQ: 1224614774
昵称:嗡嘛呢叭咪哄

一、OC 回收机制概念
1.OC是支持垃圾回收机制的(Garbage
collection简称GC),

2.macOS开发中是支持的,但是iOS中,是不支持GC的。
3.iOS开发只支持手动内存管理和ARC,Mac开发支持GC垃圾回收机制,
18.8之后弃用了GC,
对剑使用ARC
4.iOS开发是支持ARC(Automatic Reference Counting的简称),ARC是在IOS5之后推出的新技术,它与GC的机制是不同的。

二、OC 回收机制区别

我们在编写代码时, 不需要向对象发送release或者autorelease方法,也不可以调用delloc方法,编译器会在合适的位置自动给用户生成release消息(autorelease),
ARC 的特点是自动引用技术简化了内存管理的难度.

ARC介于自动垃圾回收(GC)和手动内存管理之间。就像垃圾回收,ARC让程序员不再需要书写retain/release/autorelease语句。但它又不同于垃圾回收,ARC无法处理retaincycles。在ARC里,如果两个对象互相强引用(strong
references)将导致它们永远不会被释放,甚至没有任何对象引用它们。
因此,尽管ARC能免去程序员大部分内存管理问题,但仍然要程序员自己避免retaincycles或手动打断对象之间的retain循环。

ARC和苹果的垃圾回收之间还有一个重要的不同:ARC不是强制的。而对于苹果的垃圾回收,要么整个程序都使用,要么都不用。也就是说在app中的所有O-C代码,包括所有的苹果框架和所有的第3方库必须支持垃圾回收,才能使用垃圾回收。相反,ARC和非ARC代码可以在一个app中和平共处。这使得将项目可以零星地迁移到ARC
而不会像垃圾回收起初遇到的各种兼容性和稳定性的问题。


谢谢!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息