Core Foundation 框架 和 Foundation 框架是紧密相关的。
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。
下面列举该框架支持进行管理的数据以及可提供的服务:
群体数据类型 (数组、集合等)、程序包、字符串管理、日期和时间管理、原始数据块管理、
偏好管理、URL及数据流操作、线程和RunLoop、端口和soket通讯
现在基本都是ARC机制,只简要说下在ARC下使用
比如说我们代码里面常见的
CFDictionaryRef、CFArrayRef、CFStringRef 和NSDictionary、NSArray、NSString 互相转换
//string 会自动释放 cfString 不会自动释放 在转换的时候要用__bridge_retained
NSString *string = [NSString stringWithFormat:...];
//保留
CFStringRef cfString = (__bridge_retained CFStringRef)string;
...
//释放
CFRelease(cfString); // 由于Core Foundation的对象不属于ARC的管理范畴,所以需要自己release
//cfString 转移成NSString NSSting ARC自动释放
CFStringRef cfString = CFStringCreate...();
NSString *string = (__bridge_transfer NSString *)cfString;
// CFRelease(cfString); 因为已经用 __bridge_transfer 转移了对象的所有权,已经是Foundation下的,所以不需要调用 release
为了解决这一问题,我们使用 __bridge 关键字来实现id类型与void*类型的相互转换。看下面的例子。
id obj = [[NSObject alloc] init];
void *p = (__bridge void *)obj;
id o = (__bridge id)p;
CFBridgingRetain( ) 代替 __bridge_retained
CFBridgingRelease() 代替 __bridge_transfer
本文参考:http://blog.csdn.net/sanpintian/article/details/8139878 来简写的,都是个人理解。