您的位置:首页 > 其它

Core Foundation框架

2015-12-27 09:59 477 查看
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。
简单来说 就是 在提供开发iOS - APP中 的基本类型和一些扩展功能。举个例子:
CFStringRef 和 NSString* 是一样的, 可以互转。(注意,是NSString*,因为CFStringRef是个指针)
关于Core Foundation,网上讲的最多的就是toll-free bridge。
简单的复述下:

__bridge只做类型转换,但是不修改对象(内存)管理权;

__bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;

__bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。

再举一个非常常用的例子:

- (NSString *)getPinyinWithStr:(NSString *)str {

NSString* ret;

NSMutableString *lin = [[NSMutableString alloc] initWithString:str];
if (CFStringTransform((__bridge CFMutableStringRef)lin, 0, kCFStringTransformMandarinLatin, NO)) {
if (CFStringTransform((__bridge CFMutableStringRef)lin, 0, kCFStringTransformStripDiacritics, NO)) {
ret = [lin uppercaseString];
}
}

return ret;

}

这是一个把中文转拼音的函数。里面就用到了CoreFoudation里面的CFStringTransform函数。

个人理解:CoreFoundation就是一个带了很多方法的库,这些方法是以c语言的接口来使用的(至于为什么,还是乔布斯当初被自己创立的公司赶出去的锅)。
然后为了调用里面很实用的功能,我们必须把Foundation 里面的类型,转成CoreFoundation里面的类型。

参考
http://blog.csdn.net/chenyong05314/article/details/17208153
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: