版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2018.02.01 |
前言
與Foundation框架不同的是,
Core Foundation框架(CoreFoundation.framework)是一組C語(yǔ)言接口,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能。接下來(lái)幾篇我們一起重新審視和詳細(xì)的看一下這個(gè)框架。感興趣的可以看上面寫的幾篇。
1. CoreFoundation框架詳細(xì)解析(一) —— 基本概覽
2. CoreFoundation框架詳細(xì)解析(二) —— 簡(jiǎn)介
3. CoreFoundation框架詳細(xì)解析(三) —— 不透明類型
Object References - 對(duì)象引用
您可以通過(guò)引用來(lái)引用Core Foundation對(duì)象(不透明類型)。 在不透明類型的每個(gè)頭文件中,您會(huì)注意到一行或兩行類似于以下內(nèi)容:
typedef const struct __CFArray * CFArrayRef;
typedef struct __CFArray * CFMutableArrayRef;
諸如這些的聲明是指向定義不透明類型的(私有)結(jié)構(gòu)的不可變和可變版本的指針引用。 許多Core Foundation函數(shù)的參數(shù)和返回值都采用這些對(duì)象引用的類型,而不是私有結(jié)構(gòu)的typedef。 例如:
CFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef array, CFStringRef separatorString);
有關(guān)不透明類型對(duì)象的不可變,可變和其他變體的更多信息,請(qǐng)參閱Varieties of Objects。
每個(gè)Core Foundation不透明類型為其對(duì)象定義唯一的類型ID,如上面CFArray對(duì)象的CFArrayRef所示。 類型ID是CFTypeID類型的整數(shù),用于標(biāo)識(shí)Core Foundation對(duì)象所屬的不透明類型。您可以在各種上下文中使用類型ID,例如在異構(gòu)集合上操作時(shí)。 Core Foundation提供編程接口來(lái)獲取和評(píng)估類型ID。
重要提示:因?yàn)轭愋虸D的值可能會(huì)隨發(fā)行版本而變化,所以您的代碼不應(yīng)該依賴于存儲(chǔ)或硬編碼的類型ID,也不應(yīng)該對(duì)類型ID的任何觀察屬性進(jìn)行硬編碼(例如, 是一個(gè)小整數(shù))。
另外,Core Foundation在一些面向?qū)ο蟮木幊陶Z(yǔ)言中定義了一個(gè)通用的對(duì)象引用類型CFTypeRef,類似于一個(gè)根類。 這個(gè)泛型引用作為參數(shù)的占位符類型和多態(tài)函數(shù)的返回值,可以引用任何Core Foundation對(duì)象。 有關(guān)此主題的更多信息,請(qǐng)參閱Polymorphic Functions。 有關(guān)使用對(duì)象引用時(shí)與內(nèi)存管理相關(guān)的問(wèn)題,請(qǐng)參閱Memory Management Programming Guide for Core Foundation。
后記
本篇已結(jié)束,后面更精彩~~~
