• Core Foundation框架


    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里面的类型。
     
    参考
  • 相关阅读:
    struct{} //长篇更新
    channel //长篇更新
    切片 //长篇更新
    引用
    核心:数据篇
    ARM指令解析
    arm寄存器解析
    Java-Selenium,获取下拉框中的每个选项的值,并随机选择某个选项
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    eclipse安装springsource-tool-suite遇到的问题及解决方案
  • 原文地址:https://www.cnblogs.com/loying/p/5079562.html
Copyright © 2020-2023  润新知