美文网首页iOS知识点~miOS开发程序员
iOS Objective-C 中是否支持垃圾回收机制

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

作者: 石虎132 | 来源:发表于2017-08-26 21:07 被阅读170次

    //联系人:石虎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 而不会像垃圾回收起初遇到的各种兼容性和稳定性的问题。

    谢谢!!!

    相关文章

      网友评论

        本文标题: iOS Objective-C 中是否支持垃圾回收机制

        本文链接:https://www.haomeiwen.com/subject/tkuvdxtx.html