OC对象使用了ARC,自己主动释放内存,可是CF中的对象没有ARC,必需要手动进行引用计数和内存释放.

两者对象之间的互相转换有三种形式:

1.__bridge:

直接转换,部改变对象的持有状况:

id obj = [NSObject new];
cfObject = (_bridge cfObject) obj;
//不改变对象持有状况,cf对象不能获得obj的引用.
id obc = (__bridge id)cfObject;
//但obc是强引用,是被__strong修饰的,必然获得cf对象的强引用.

2.CFBridgingRetain 和 __bridge_retained:

转换得到的CF对象获得一个强引用,引用计数加1,须要人工的使用CFRelease来释放CF对象:

cfobject = CFBridgingRetain(obj);
//cfoject具有强引用,必须使用手工释放
CFRelease(cfobject);

3.CFBridgingReleasing和__bridge_transfer:

将cf对象赋值给id时,释放CF对象本身的引用:

id obj = (__bridge_transfer id)cfObject;
//id拥有一个强引用,但cfObject本身的引用已经被释放了.

OC对象与Core Foundation对象的转换的更多相关文章

  1. Objective-C对象与Core Foundation对象

    Core Foundation 对象主要使用在用C语言编写的Core Foundation 框架中,并引用计数的对象.与Objective-C对象差别非常少.不管哪种框架生成的对象,一旦生成,便可在两 ...

  2. Objective-C:Objective-C 和 Core Foundation 对象相互转换的内存管理

    Objective-C 和 Core Foundation 对象相互转换的内存管理 iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString ...

  3. Objective-C 和 Core Foundation 对象相互转换的内存管理总结

    本文转载至 http://blog.csdn.net/allison162004/article/details/38756649 OS允许Objective-C 和 Core Foundation ...

  4. Objective-C 和 Core Foundation 对象相互转换

    iOS同意Objective-C 和 Core Foundation 对象之间能够轻松的转换: CFStringRef aCFString = (CFStringRef)aNSString; NSSt ...

  5. IOS开发之—— Core Foundation对象与OC对象相对转换的问题

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...

  6. Core Foundation框架

    转载自:http://blog.csdn.net/weiwangchao_/article/details/7744972 Core Foundation框架 (CoreFoundation.fram ...

  7. Core Foundation 框架

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

  8. iOS- Core Foundation对象与OC对象相对转换

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...

  9. Core Foundation框架介绍

    Core Foundation框架介绍 **参考网址: ARC下OC对象和CF对象之间的桥接 Core Foundation框架介绍 Core Foundation框架 Core Foundation ...

随机推荐

  1. 用cmd命令创建oracle 数据库、用户和表空间

    Win+R调查运行窗口,输入cmd回车 连接到本地oracle库 创建名为"SXSJ"的表空间,其初始大小为512M,支持自动扩展,每次增量为32M: create tablesp ...

  2. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  3. python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  4. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

  5. Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常。

    Oracle.DataAccess.Client.OracleCommand”的类型初始值设定项引发异常. 64位系统下,部署32位odp.net,出现问题.解决方法:卸载32位xcopy odt.n ...

  6. 解决mssql localdb 中文乱码问题

    使用以下查询语句即可. alter database "E:\.Net Core\Database\hm.mdf" set single_user with rollback im ...

  7. Servlet编程实例2

    上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容. 所以为了做出改进,这次使用RequestDispatcher ...

  8. ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...

  9. 函数chdir、fchdir和getcwd

    函数chdir.fchdir和getcwd chdir.fchdir函数     每个进程都有一个当前工作目录,当前目录是进程的一个属性     当用户登录UNIX系统时,其当前工作目录通常是口令文件 ...

  10. TCP网络程序实例——服务器端与客户端交互

    实例02 客户端/服务器的交互 实例位置:光盘\Code\SL\14\02 视频位置:光盘\Video\14\ ◆ 服务器端 创建服务器端项目Server,在Main方法中创建TCP连接对象:然后监听 ...