__bridge的相关使用

本文介绍了在Objective-C的ARC环境下,如何使用__bridge、__bridge_transfer和__bridge_retained进行内存管理转换,特别是Core Foundation对象与Objective-C对象间的转换。通过这些关键字,可以实现类型转换并正确处理内存所有权,防止内存泄漏。文章还提到了Toll-Free Bridging的概念,以帮助开发者更好地理解和使用这些转换方式。
摘要由CSDN通过智能技术生成

ARC(Automatic Reference Count:自动引用计数)是苹果在WWDC2011年大会提出的用于内存管理的一项技术,解决了iOS中90%的内存管理问题,让程序员从MRC(Manual Reference Count:手工引用计数)解放了出来。这篇文章不涉及ARC的原理,因为这方面优秀的博客有很多,我就主要总结一下使用ARC可能忽略的一些问题。

bridge,顾名思义就是桥,在iOS中就是建立底层框架如CoreFoundation(以下简称CF)、Core Graphics、Core Text等的对象和OC对象之间的联系,其实我们主要关心的就是它们的内存管理方式的差异。OC对象可以交给ARC,CF本质上是C风格指针变量,因此就不能自然而然的使用ARC。解决这个问题的第一种方式就是当用完它之后我们调用CFRelease释放其所占用的内存,另外一种方式就是通过bridge将它们的内存管理方式相互转换。

  • __bridge:CF对象和OC对象转化时只涉及类型不涉及对象所有权的转化。
NSURL *url = [NSURL alloc] initWithString:@"http://www.baidu.com"]];
CFURLRef ref = (__bridge CFURLRef)url;

因为这里只是将OC对象的类型转化成CF对象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值