Core Foundation框架(1)基础介绍

在开发过程中绝大多数时间使用的是UIKit和Foundation框架,UIKit提供诸如UIView和UIButton这类的控件,Foundation提供NSArray,NSDictionary这类的数据结构,两者结合可以解决大部分问题,但是有的时候需要底层框架,底层框架名字通常以Core开头,比如Core Text,Core Graphics和Core Video.它们都是以Core Foundation为基础的C语言的API.

Core Foundation中类型都是不透明类型(opaque type)。在Core Foundation中只能只使用对象的引用,基类型CFTypeRef实际上是一个void*类型,这样将某些变量定义成CFTypeRef类型可以便于实现一些函数的多态性。(比如CFEqual,CFHash,CFRelease,CFRetain等函数)

除了CFTypeRef,其他不透明类型都是结构体,常见的组合如下:

typedef const struct __CFString * CFStringRef;

typedef strct __CFString * CFMutableStringRef;

这样编译器可以检查const的正确性,但是需要注意这里不是真正的继承。在Core Foudation中,如果一个类有几个子类,那么它一般就是void*类型。比如CFPropertyListRef子类有(CFString,CFDate,CFNumber)。好在这种情况并不多,大部分类型都是struct或者const struct。

时间: 2024-10-07 05:46:15

Core Foundation框架(1)基础介绍的相关文章

《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理

原创文章,欢迎转载.转载请注明:关东升的博客 在Swift原生数据类型.Foundation框架数据类型和Core Foundation框架数据类型之间转换过程中,虽然是大部分是可以零开销桥接,零开销并不意味着内存什么都不用管.Swift类型内存管理是采用ARC,Foundation类型和Core Foundation类型内存管理都是采用MRC或ARC,CoreFoundation类型内存管理是基于C语言风格的,它有一个对象所有权的概念. Objective-C的MRC内存管理 Core Fou

Swift—Core Foundation框架-备

Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Swift中调用这种C语言风格的API比较麻烦,但是在OS X和iOS开发过程中,有时候使用CoreFoundation框架的API是非常方便的,例如在与C语言混合编码的时候. Core Foundation框架与Foundation框架紧密相关,他们具有与相同的接口,但是不同.Core Foundation框架是基于C语言风格的,而Foundation框架是基于Obje

《从零開始学Swift》学习笔记(Day60)——Core Foundation框架

创文章,欢迎转载.转载请注明:关东升的博客   Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.尽管在Swift中调用这样的C语言风格的API比較麻烦,可是在OS X和iOS开发过程中,有时候使用CoreFoundation框架的API是很方便的,比如在与C语言混合编码的时候. Core Foundation框架与Foundation框架紧密相关,他们具有与同样的接口,可是不同.Core Foundation框架是基于C语言

Core Foundation 框架

Core Foundation 框架 2013-12-08 22:52 1978人阅读 评论(0) 收藏 举报 目录(?)[+] 转载自:http://blog.csdn.net/weiwangchao_/article/details/7744972 Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组.集合等) 程序包

IOS之Core Foundation框架和Cocoa Foundation框架的区别

Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组.集合等) 程序包 字符串管理 日期和时间管理 原始数据块管理 偏好管理 URL及数据流操作 线程和RunLoop 端口和soket通讯 Core Foundation框架和Foundation框架紧密相关,它们为相同功能提供接口,但Foundation框架提供Objec

OC - 7 Foundation框架的简单介绍

OC语言-07-OC语言-Foundation框架 结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInteger location:表示一个元素在另一个元素中的位置 NSUInteger length:表示该元素的长度 若找不到指定的元素,将返回NSNotFound(整型-1) 常用函数 NSRange NSMakeRange(NSUInteger loc, NSUInteger len)创建一个NSRan

Core Foundation框架(2)命名规范,内省

命名规则中最重要的就是Create Rule,官方说明如下: There is an important distinction between Get, and Copy and Create, in names of functions that return values. If you use a Get function, you cannot be certain of the returned object’s life span. To ensure the persistenc

unittest测试框架_1_基础介绍

unittest,python自带的单元测试框架. 该框架的结构如下: 1.Test case : 一个Test case 就是一个测试用例,包括测试前环境的搭建(setUP).实现测试过程的代码,以及测试后环境的还原(TearDown). 2.Test Suite: 一个功能的验证,需要个多个测试用例,把多个测试用例集合在一起执行,就是Test Suite(测试套件).通过addTest加载测试用例. 3.Test Runner:测试的执行.通过TextRunner类提供的run()方法来执行

《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象

原创文章,欢迎转载.转载请注明:关东升的博客 内存托管对象 Swift中调用CoreFoundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象. 内存托管对象就是由编译器帮助管理内存,我们不需要调用CFRetain函数获得对象所有权,也不需要调用CFRelease函数放弃对象所有权. 获得这些内存托管对象的方法,是采用了CF_RETURNS_RETAINED或CF_RETURNS_NOT_RETAINED注释声明,示例代码: -(CGPathRef)makeToPath CF_