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对象类