CoreFoundation框架詳細解析(三) —— 不透明類型

版本記錄

版本號 時間
V1.0 2018.02.01

前言

與Foundation框架不同的是谈秫,Core Foundation框架 (CoreFoundation.framework) 是一組C語言接口飒房,它們?yōu)閕OS應用程序提供基本數據管理和服務功能。接下來幾篇我們一起重新審視和詳細的看一下這個框架。感興趣的可以看上面寫的幾篇。
1. CoreFoundation框架詳細解析(一) —— 基本概覽
2. CoreFoundation框架詳細解析(二) —— 簡介

Opaque Types - 不透明類型

Core Foundation的支持封裝和多態(tài)函數的對象模型是基于不透明類型的。

基于不透明類型的對象的各個字段對客戶端是隱藏的秘案,但類型的函數提供對這些字段的大部分值的訪問。 圖1描述了它“ hides”的數據中的一個不透明類型潦匈,以及它呈現給客戶端的界面阱高。

注意:“Class”不是用來指不透明的類型,因為盡管類和不透明類型在概念上相似历等,許多人可能會覺得這個詞很混亂讨惩。 但是,Core Foundation文檔經常將這些類型的特定數據承載實例稱為“objects”寒屯。

Core Foundation有許多不透明的類型荐捻,這些類型的名稱反映了它們的預期用途。 例如寡夹,CFString是一個不透明的類型处面,用于表示Unicode字符數組,并對其進行操作菩掏。 (“CF”當然是Core Foundation的前綴魂角。)CFArray是基于索引的集合函數的不透明類型。 支持不透明類型的函數智绸,常量和其他輔助數據類型通常在具有類型名稱的頭文件中定義野揪;例如,CFArray.h包含CFArray類型的符號定義瞧栗。


Advantages of Opaque Types - 不透明類型的優(yōu)勢

對于某些情況來說斯稳,不透明的類型可能會阻止直接訪問結構的內容,從而造成不必要的限制迹恐。也有可能會有不明朗的類型的開銷挣惰,可能會影響程序的性能。但不透明類型的好處超過了這些看似的限制。

不透明類型為底層功能的實現提供了更好的抽象和更多的靈活性憎茂。通過隱藏結構字段等細節(jié)珍语,Core Foundation可以在這些細節(jié)發(fā)生變化時減少客戶端代碼中可能出現的錯誤。此外竖幔,不透明類型允許優(yōu)化板乙,如果暴露可能會造成混淆。例如赏枚,CFString“正式”表示UniChar類型的16位字符數組亡驰。但是,CFString可能選擇將ASCII范圍內的一系列字符存儲為8位值饿幅。復制一個不可變的對象可能會(通常會)導致對該對象的共享引用,而不是內存中的兩個單獨的對象(請參閱Memory Management Programming Guide for Core Foundation)戒职。

繼續(xù)使用CFString的例子栗恩,使用不透明類型來存儲字符似乎很重要。但事實證明洪燥,這種存儲的CPU成本并不比使用簡單的C字符數組高很多磕秤,而且存儲成本往往更低。另外捧韵,不透明不一定意味著不透明類型不能直接提供訪問內容的機制市咆。例如,CFString為此提供了CFStringGetCStringPtr函數再来。

最后蒙兰,你可以在一定程度上定制一些不透明的類型。例如芒篷,集合類型允許您定義用于調用集合中每個成員的函數的回調函數搜变。

后記

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

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末针炉,一起剝皮案震驚了整個濱河市挠他,隨后出現的幾起案子,更是在濱河造成了極大的恐慌篡帕,老刑警劉巖殖侵,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異镰烧,居然都是意外死亡拢军,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門拌滋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朴沿,“玉大人,你說我怎么就攤上這事《脑” “怎么了魏铅?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坚芜。 經常有香客問我览芳,道長,這世上最難降的妖魔是什么鸿竖? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任沧竟,我火速辦了婚禮,結果婚禮上缚忧,老公的妹妹穿的比我還像新娘悟泵。我一直安慰自己,他們只是感情好闪水,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布糕非。 她就那樣靜靜地躺著,像睡著了一般球榆。 火紅的嫁衣襯著肌膚如雪朽肥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天持钉,我揣著相機與錄音衡招,去河邊找鬼。 笑死每强,一個胖子當著我的面吹牛始腾,可吹牛的內容都是我干的。 我是一名探鬼主播舀射,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼窘茁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脆烟?” 一聲冷哼從身側響起山林,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邢羔,沒想到半個月后驼抹,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拜鹤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年框冀,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敏簿。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡明也,死狀恐怖宣虾,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情温数,我是刑警寧澤绣硝,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站撑刺,受9級特大地震影響鹉胖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜够傍,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一甫菠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冕屯,春花似錦寂诱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搞挣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間音羞,已是汗流浹背囱桨。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嗅绰,地道東北人舍肠。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像窘面,于是被迫代替她去往敵國和親翠语。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容