我的阅读

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

2018-02-01  本文已影响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

后记

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

上一篇下一篇

猜你喜欢

热点阅读