ARC中使用Toll-Free Bridging 桥接

Toll-Free Bridging,简称TFB.可以实现某些objc类和对应的CoreFoundation类之间的互换使用
  /*
    
  桥接: CoreFoundation 中的类和 Foundation 中的类型可以互相转换
     ARC
不能去管理 CoreFoundation 中的类型的引用计数
 */


//OC 对象( ARC 管理内存) ----> CF 类型( ARC 不做管理)
    
  //__bridge_retained  这个桥接过程, ARC 需要丢弃掉内存管理的权限,由 CF 类型自己做内存管理
 
   
  NSString  *s1 =[ NSString  stringWithFormat : @"jack" ];
   
  // 第一种方法
   
  CFStringRef  s2 =( __bridge_retained  CFStringRef )s1;
   
  // 第二种方法
   
  CFStringRef  s3= CFBridgingRetain (s1);
   
  //.......
   
  CFRelease (s2);
   
  CFRelease (s3);

//CF 类型( ARC 不做管理) ----> OC 对象( ARC 管理内存)
//__bridge_transfer 这个桥接过程 , CF 类型的内存管理授权给 ARC 管理
   
  CFStringRef  cfstring = CFStringCreateWithFormat ( kCFAllocatorDefault ,  NULL , ( CFStringRef ) @"test" );
   
  // 第一种方法
   
  NSString  *str =( __bridge_transfer  NSString *)(cfstring);
   
  // 第二种方法
//    NSString *str =CFBridgingRelease(cfstring);
   
  // 如果用第二行代码则不需要如下代码
   
  CFRelease (cfstring);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值