美文网首页我的阅读
CoreFoundation框架详细解析(四) —— 对象引用

CoreFoundation框架详细解析(四) —— 对象引用

作者: 刀客传奇 | 来源:发表于2018-02-01 10:50 被阅读76次

    版本记录

    版本号 时间
    V1.0 2018.02.01

    前言

    与Foundation框架不同的是,Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。接下来几篇我们一起重新审视和详细的看一下这个框架。感兴趣的可以看上面写的几篇。
    1. CoreFoundation框架详细解析(一) —— 基本概览
    2. CoreFoundation框架详细解析(二) —— 简介
    3. CoreFoundation框架详细解析(三) —— 不透明类型

    Object References - 对象引用

    您可以通过引用来引用Core Foundation对象(不透明类型)。 在不透明类型的每个头文件中,您会注意到一行或两行类似于以下内容:

    typedef const struct __CFArray * CFArrayRef;
    typedef struct __CFArray * CFMutableArrayRef;
    

    诸如这些的声明是指向定义不透明类型的(私有)结构的不可变和可变版本的指针引用。 许多Core Foundation函数的参数和返回值都采用这些对象引用的类型,而不是私有结构的typedef。 例如:

    CFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef array, CFStringRef separatorString);
    

    有关不透明类型对象的不可变,可变和其他变体的更多信息,请参阅Varieties of Objects

    每个Core Foundation不透明类型为其对象定义唯一的类型ID,如上面CFArray对象的CFArrayRef所示。 类型ID是CFTypeID类型的整数,用于标识Core Foundation对象所属的不透明类型。您可以在各种上下文中使用类型ID,例如在异构集合上操作时。 Core Foundation提供编程接口来获取和评估类型ID。

    重要提示:因为类型ID的值可能会随发行版本而变化,所以您的代码不应该依赖于存储或硬编码的类型ID,也不应该对类型ID的任何观察属性进行硬编码(例如, 是一个小整数)。

    另外,Core Foundation在一些面向对象的编程语言中定义了一个通用的对象引用类型CFTypeRef,类似于一个根类。 这个泛型引用作为参数的占位符类型和多态函数的返回值,可以引用任何Core Foundation对象。 有关此主题的更多信息,请参阅Polymorphic Functions。 有关使用对象引用时与内存管理相关的问题,请参阅Memory Management Programming Guide for Core Foundation

    后记

    本篇已结束,后面更精彩~~~

    相关文章

      网友评论

      • 4ed059837eca:是不是通俗一点理解:
        1.CFxxx是不应该被使用的,而是使用CFxxxRef.但其实并没有实际的区别
        2.不透明类型,就是内部隐藏,不容许开发者使用
        这样理解是否正确?
        刀客传奇:差不多这个意思,这个CFxxxRef很有用,特别是视频编解码的VideoToolBox等很多都是直接用C写

      本文标题:CoreFoundation框架详细解析(四) —— 对象引用

      本文链接:https://www.haomeiwen.com/subject/irgrzxtx.html