版本记录
版本号 | 时间 |
---|---|
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。
后记
本篇已结束,后面更精彩~~~
网友评论
1.CFxxx是不应该被使用的,而是使用CFxxxRef.但其实并没有实际的区别
2.不透明类型,就是内部隐藏,不容许开发者使用
这样理解是否正确?