由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge,__bridge_retained和__bridge_transfer三个转换关键字。

1.__bridge CF和OC对象转化时只涉及对象类型不涉及对象所有权的转化.

意思就是,把CFObject类型转换成NSObject类型,但是对象的持有者依然是CFObject,所以我们不需要对CFObject做内存管理

2.__bridge_transfer 也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。

由ARC来代替我们管理内存

3.__bridge_retained (也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;

需要我们手动来管理内存

转载于:https://juejin.im/post/5c1a0dfbe51d454db5636543

IOS 之__bridge__bridge_transfer和__bridge_retained相关推荐

  1. IOS开发之__bridge,__bridge_transfer和__bridge_retained

    Core Foundation 框架 Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列 ...

  2. IOS中__bridge,__bridge_retained和__bridge_transfer理解

    CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__bridge ...

  3. 手把手教你ARC——iOS/Mac开发ARC入门和使用

    本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http:/ ...

  4. iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)

    iOS编程--通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版) 很多的应用都需要用到手机的唯一标示,而且要求这个唯一标示不能因为应用app的卸载或者改变而变化. 在iO ...

  5. iOS开发ARC内存管理技术要点

    本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...

  6. iOS之深入探究多线程实现、线程安全和线程死锁

    一.线程与进程 ① 线程与进程的定义 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行: 进程要想执行任务,必须得有线程,进程至少要有一条线程: 程序启动会默认开启一条线程,这条线程被 ...

  7. iOS开发ARC入门和使用

    本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http:/ ...

  8. iOS开发ARC内存管理

    本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时特性,更不是垃 ...

  9. iOS 下ARC的内存管理机制

    本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...

最新文章

  1. YARN-2.7.3-源码分析系列2:启动脚本原理的分析
  2. Bootstrap排版中地址与引用详解
  3. iOS程序员眼中的客户端免登陆(数据迁移已更新)
  4. ATL中集合和枚举器
  5. 科大星云诗社动态20210131
  6. DHCP数据抓包分析--wireshark
  7. SpringBoot2.0 基础案例(07):集成Druid连接池,配置监控界面
  8. [Swift通天遁地]一、超级工具-(13)使用PKHUD制作各种动态提示窗口
  9. WEB-INF 目录下的文件无法直接浏览器访问
  10. 计算机类中文核心期刊影响因子(2006年)
  11. ES6新特性_ES6生成器函数声明与调用---JavaScript_ECMAScript_ES6-ES11新特性工作笔记020
  12. 使用WMI和性能计数器监控远程服务器权限设置
  13. eps图片怎样用html显示,eps图片用什么软件打开
  14. 联想计算机连接不上蓝牙耳机,联想电脑(Lenovo)一体机怎样连接蓝牙耳机
  15. 「Golang」sync.Once用法以及源码讲解
  16. RuntimeWarning: invalid value encountered in arccos
  17. iOS使用ShareSdk进行第三方微信登录
  18. 使用Epubor Ultimate将Kindle电子书导出为PDF(仅Windows)
  19. 大连理工版小学计算机教案,大连理工版小学信息技术教案
  20. MySQL8安装教程和新特征

热门文章

  1. bash命令行常用快捷键
  2. hive常用sql语句
  3. sysaux表空间数据库块损坏/游离块的修复
  4. 查看apache、linux、kernel、nginx等版本
  5. 更改IE的默认搜索引擎
  6. 过滤功能失效 Google Base成“虚拟×××”
  7. Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法...
  8. Golang用body来get或post数据
  9. Identity Mappings in Deep Residual Networks
  10. 大数据遇上大型机 结果会如何?