zoukankan      html  css  js  c++  java
  • 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里面的类型。
     
    参考
  • 相关阅读:
    RFM模型
    mysql日期函数(时间函数)
    数据库探索
    anaconhda安装步骤
    mysql安装和环境配置
    mysql时间条件查询
    mysql自连接
    mysql查询注意事项(查询优化)
    mysql常见的保留字和反引号使用
    多表联合查询注意事项(索引)
  • 原文地址:https://www.cnblogs.com/loying/p/5079562.html
Copyright © 2011-2022 走看看