美文网首页
菜鸟教程——iOS内存管理机制

菜鸟教程——iOS内存管理机制

作者: iOS谢先森 | 来源:发表于2017-07-20 23:36 被阅读0次

任何继承了NSObject的对象,对基本数据类型无效

每个对象内部都保存了一个与之相关联的整数,称为引用计数器

当使用alloc,new,copy创建一个对象时,引用计数器都设置成为1

给对象发送一个retain,引用计数+1,release则-1;当引用计数为0时,将被销毁,被占用的内存被系统回收,oc会自动向对象发送一条dealloc消息。

可以给对象发送retainCount消息获得当前对象的引用计数器值

ARC是 Automatic Reference Counting 的简称,我们称之为自动引用计数,是IOS5.0之后推出的内存管理的新特性。本质上还是使用引用计数进行对象管理,只是编写者不需要向对象发送release或者autorelease方法,也不可以调用delloc方法,编译器会在合适的位置自动给用户生成release消息。

而GC指的是:garbage  collection ,内存垃圾回收机制;ARC比GC性能优越;

ARC中如果内存管理不当的话,同样也会造成内存泄露,比如说:ARC中,也会因为循环引用导致内存泄露;或者说,OC对象与CoreFoundation类之间桥接时,管理不当也会造成内存泄露;

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内存管理机制

    任何继承了NSObject的对象,对基本数据类型无效 每个对象内部都保存了一个与之相关联的整数,称为引用计数器 当...

  • iOS---内存管理

    笔者现在还是一个刚入门 iOS 开发的菜鸟,跟着部门的大佬在学习。最近大佬让我去了解一下 iOS 的内存管理机制,...

  • 内存管理

    ARC内存管理机制详解理解 iOS 的内存管理

  • iOS面试知识点

    1、ios内存管理机制 iOS内存管理机制的原理是引用计数,当这块内存被创建后,它的引用计数0->1,表示有一个对...

  • ios常见面试题总结

    1.谈一谈IOS内存管理机制。 IOS内存管理机制的原理是引用计数,当这块内存被创建后引用计数加1,这时若果有另一...

  • iOS 内存管理机制

    iOS内存管理机制原理 iOS内存管理机制的原理是引用计数,引用计数是一个简单而有效的管理对象生命周期的方式。当这...

  • IOS内存管理

    内存概述 内存是用来存啥的? 内存布局 哈希表 垃圾回收(GC) IOS内存管理机制 MRC & ARC T...

  • iOS内存管理

    iOS内存管理机制 基本数据类型无需我们管理,内存管理的范围是对象,iOS内存管理采用了引用计数器的方式来管理内存...

  • iOS内存管理retain,assign,copy,strong

    iOS目前已经是ARC 时代。但对于要想了解ARC的内存管理机制,还是依旧需要对MRC时代的内存管理机制有深刻的理...

  • 2020年iOS大厂面试题总结(一)

    2019年IOS面试题总结(一) 1. ios内存管理机制 2. NSThread、GCD、NSOperation...

网友评论

      本文标题:菜鸟教程——iOS内存管理机制

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