Objective-C指针与CoreFoundation指针之间的转换

Objective-C指针与CoreFoundation指针之间的转换

简介

在程序中,如果要在Foundation和CoreFoundation两大框架中掺杂使用,那么可以使用bridge桥接。

ARC仅仅管理Objective-C指针(retain、release、autorelease、alloc、copy、new等),但是不管理CoreFoundation指针所指对象内存的释放,所以CF指针有手动管理,如果嫌麻烦可以使用CFRetain和CFRelease来管理。

使用

CocoaFoundation指针与CoreFoundation指针转换,需要考虑的是所指向对象所有权的归属。ARC提供了3个修饰符来管理。

  1. _ _bridge,什么也不做,仅仅是转换。此种情况下:
    i ). 从Cocoa转换到Core,需要人工CFRetain,否则,Cocoa指针释放后, 传出去的指针则无效。
    ii ).从Core转换到Cocoa,需要人工CFRelease,否则,Cocoa指针释放后,对象引用计数仍为1,不会被销毁。

  2. _ _bridge_retained,转换后自动调用CFRetain,即帮助自动解决上述i的情形。

  3. _ _bridge_transfer,转换后自动调用CFRelease,即帮助自动解决上述ii的情形。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值