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

苹果官方的文档(https://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html):

__bridge只做类型转换,但是不修改对象(内存)管理权;

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

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

IOS中__bridge,__bridge_retained和__bridge_transfer理解相关推荐

  1. __bridge,__bridge_retained和__bridge_transfer的意思,区别与使用

    使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说.但是像我这种Java基础本身就不牢固,做了两年的iOS已经习惯手动管理内存的半吊子,使用ARC还是经常碰壁. 最近碰到 ...

  2. iOS中autolaylout和sizeclass的理解

    没发现居然有三四个月没写博客了,好惭愧.都是加班太多了,还好现在换了一家,还是得继续写啊. 主要是学习了http://onevcat.com/上的内容写的笔记,并自己动手操作了一下. 已经排好版了,懒 ...

  3. __bridge,__bridge_retained,__bridge_transfer

    最近遇到类型转换需要添加__bridge等开始不是很理解,后面查询资料才知道在CFObject 与 NSObject 之间转换时,ARC是不能管理Core Foundation object的生命周期 ...

  4. iOS 中delegate的理解与使用(传值)

    之前做了半年的iOS,刚入了门,又被拉去转战java,现在iOS的那位大佬离职了,又被弄过来维护app,之前对于iOS中的delegate一直都是半知半解,所以刚好趁着这个机会把我所了解的记下来,以便 ...

  5. iOS 中对 HTTPS 证书链的验证

    这篇文章是我一边学习证书验证一边记录的内容, 稍微整理了下,共扯了三部分内容: HTTPS 简要原理: 数字证书的内容.生成及验证: iOS 上对证书链的验证. HTTPS 概要 HTTPS 是运行在 ...

  6. macOS 与 iOS 中的 Tagged Pointer

    目录 Tagged Pointer 的简介 解除 Tagged Pointer 的数据混淆 Tagged Pointer 的原理:macOS Tagged Pointer 的原理: iOS Tagge ...

  7. iOS中几种数据持久化方案总结

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  8. iOS中引用计数内存管理机制分析

    在 iOS 中引用计数是内存的管理方式,虽然在 iOS5 版本中,已经支持了自动引用计数管理模式,但理解它的运行方式有助于我们了解程序的运行原理,有助于 debug 程序. 操作系统的内存管理分成堆和 ...

  9. ios开发 ajax hook,IOS中的网络拦截总结

    因为业务场景需要,要求对App中网络请求进行拦截.这里包括原生网络请求和WebView里的网络请求.之前我们了解过原生网络请求的拦截是可以实现的,但是WebView中网络请求似乎还不太可能,所以抱着尝 ...

最新文章

  1. hbase设计方案1
  2. java的compare to(),java – compare()和compareTo()之间有什么区别?
  3. juniper srx 3400 双机 配置
  4. jquery中的css() animate() width()的都可以运用相对值
  5. Flex初学者群(54200135)共享资料清单-----2008.1.24
  6. 使用TiledMap做的圈地游戏
  7. 无法导入 指定文件不是注册脚本 您在注册表编辑器中只能导入二进位注册文件.reg
  8. ADMM algorithm
  9. dell2900服务器做系统,dell2900如何重装系统
  10. C++核心准则T.10:为所有的模板参数定义概念
  11. 25句经典语录 带你成长
  12. 清水居士与数名志愿者大年三十慰问夏家河村周边贫困家庭
  13. 电脑可以上网,但是仍然显示无网络连接
  14. arduino系列教程之触摸开关(外部中断)开关小灯led
  15. 1-2 经济学发展史、实证/规范经济学
  16. CPU的指令集(指令系统)
  17. python os.system()和os.popen()
  18. mysql怎么命令查看表的数据_查看MySQL数据库表的命令介绍
  19. 玲珑oj 1032A-B(组合数学)
  20. github搭建自己的博客网站

热门文章

  1. overleaf 插入图片_Overleaf手册(三)--图片
  2. HDU 1849 Rabbit and Grass
  3. PHP脚本中的两种换行符的区别
  4. QImage、QImageReader Qt获取图片大小
  5. 字符串流stringstream--<sstream>
  6. intellij idea 2016破解方法
  7. 如何在计算机中打开显卡,windows系统如何打开显卡的硬件加速呢?
  8. JS获取当日起止时间时间戳
  9. java编程电话号码查询_java课程设计电话号码查询系统(15页)-原创力文档
  10. 最简单的存储过程写法及调用