美文网首页iOS Developer
iOS ARC下的内存管理

iOS ARC下的内存管理

作者: Rxiaobing | 来源:发表于2016-11-17 08:57 被阅读0次

ARC 能够解决 iOS 开发中 90% 的内存管理问题,但是另外还有 10% 内存管理,是需要开发者自己处理的,这主要就是与底层 Core Foundation 对象交互的那部分,底层的 Core Foundation 对象由于不在 ARC 的管理下,所以需要自己维护这些对象的引用计数。

关于循环引用

循环引用可以使用弱引用来解决

若引用的实现原理

弱引用的实现原理是这样,系统对于每一个有弱引用的对象,都维护一个表来记录它所有的弱引用的指针地址。这样,当一个对象的引用计数为 0 时,系统就通过这张表,找到所有的弱引用指针,继而把它们都置成 nil

内存监测

xcode自带工具 动态检测 product-profile-leaks

静态检测 product-analyze

Core Foundation 对象的内存管理

所以对于底层 Core Foundation 对象,我们只需要延续以前手工管理引用计数的办法即可,对于 CFRetain 和 CFRelease 两个方法,读者可以直观地认为,这与 Objective-C 对象的 retain 和 release 方法等价

在 ARC 下,我们有时需要将一个 Core Foundation 对象转换成一个 Objective-C 对象,这个时候我们需要告诉编译器,转换过程中的引用计数需要做如何的调整。这就引入了bridge相关的关键字,以下是这些关键字的说明:

__bridge: 只做类型转换,不修改相关对象的引用计数,原来的 Core Foundation 对象在不用时,需要调用 CFRelease 方法。

__bridge_retained:类型转换后,将相关对象的引用计数加 1,原来的 Core Foundation 对象在不用时,需要调用 CFRelease 方法。

__bridge_transfer:类型转换后,将该对象的引用计数交给 ARC 管理,Core Foundation 对象在不用时,不再需要调用 CFRelease 方法。

相关文章

  • iOS夯实:ARC时代的内存管理

    iOS夯实:ARC时代的内存管理 iOS夯实:ARC时代的内存管理

  • OC中内存管理

    在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前...

  • iOS内存管理详解

    iOS内存管理 前言: 现在的iOS开发已然是ARC时代,swfit的发展趋势也不错,ARC下的日常开发,随对内存...

  • 内存管理

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

  • iOS - ARC环境下dealloc/didReceiveMe

    block没那么难(三):block和对象的内存管理 一、iOS开发 ARC下dealloc的使用 ARC下,系统...

  • 内存管理面试题

    讲一下 iOS 内存管理的理解 讲一下 iOS 内存管理的理解实现原理 内存中的5大区分别是什么? ARC 的 r...

  • ios循环引用

    首先,研究ios循环引用,离不开怎么使用strong和weak类型的引用和mrc下内存管理和arc下的内存管理。a...

  • Swift中如何避免循环引用

    内存管理中经常会遇到的一个问题便是循环引用。首先,我们来了解一下iOS是如何进行内存管理的。 ARC ARC(Au...

  • 内存管理

    OC知识--彻底理解内存管理(MRC、ARC) IOS工程中混合使用ARC与MRC iOS 简单而粗暴的说一说内存...

  • 《iOS开发进阶》阅读笔记(一)内存管理释疑

    ARC ARC能够解决iOS开发中90%的内存管理问题,但是另外还有10%的内存管理是需要手动管理的,主要就是与底...

网友评论

    本文标题:iOS ARC下的内存管理

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