iOS : runtime -- Type Encodings

筆記記錄:來源于apple的文檔,具體參考:apple文檔

類型編碼

為了幫助運行時系統(tǒng)拟杉,編譯器對 回報 和參數(shù)類型用于字符串中的每個方法央拖,并將該字符串與方法選擇器相關(guān)聯(lián)拥坛。它使用的編碼方案在其他上下文中也很有用,因此可以通過@encode()編譯器指令公開使用。當(dāng)給出類型說明時攒射,@encode()返回編碼該類型的字符串醋旦。該類型可以是基本類型,例如int会放,指針饲齐,帶標(biāo)簽的結(jié)構(gòu)或聯(lián)合或類名,實際上可以用作Csizeof()運算符的參數(shù)的任何類型咧最。

char *buf1 = @encode(int **);
char *buf2 = @encode(struct key);
char *buf3 = @encode(Rectangle);

下表列出了類型代碼捂人。請注意,它們中的許多與您出于歸檔或分發(fā)目的而對對象進(jìn)行編碼時所使用的代碼重疊矢沿。但是滥搭,這里列出了一些代碼,這些代碼在編寫編碼器時無法使用捣鲸,并且某些代碼可能不是由以下人員生成的论熙,它們可能會在編寫編碼器時使用@encode()。(有關(guān)NSCoder用于歸檔或分發(fā)的編碼對象的更多信息摄狱,請參見Foundation Framework參考中的類規(guī)范脓诡。)

Objective-C類型編碼


image.png

要點: Objective-C不支持該long double類型。@encode(long double)返回d媒役,與的編碼相同double祝谚。

數(shù)組的類型代碼括在方括號內(nèi);數(shù)組中元素的數(shù)量是在方括號之后酣衷,數(shù)組類型之前指定的交惯。例如,指向floats的12個指針的數(shù)組將被編碼為:

[12 ^ f]

在括號內(nèi)指定結(jié)構(gòu)穿仪,在括號內(nèi)指定并集席爽。首先列出結(jié)構(gòu)標(biāo)簽,然后是等號啊片,并按順序列出結(jié)構(gòu)字段的代碼只锻。例如結(jié)構(gòu):

typedef struct example {
    id   anObject;
    char *aString;
    int  anInt;
} Example;

會這樣編碼:

{example = @ * i}

無論將定義的類型名稱(Example)還是結(jié)構(gòu)標(biāo)記(example)傳遞給,編碼結(jié)果都相同@encode()紫谷。結(jié)構(gòu)指針的編碼包含有關(guān)結(jié)構(gòu)字段的相同數(shù)量的信息:

^ {example = @ * i}

但是齐饮,另一種間接訪問級別刪除了內(nèi)部類型規(guī)范:

^^ {example}

對象被當(dāng)作結(jié)構(gòu)對待。例如笤昨,將NSObject類名傳遞給會@encode()產(chǎn)生以下編碼:

{NSObject =#}

NSObject類僅聲明了一個實例變量isa的類型類祖驱。
請注意,盡管該@encode()指令未返回它們瞒窒,但是當(dāng)運行時系統(tǒng)用于在協(xié)議中聲明方法時捺僻,它們將表6-2中列出的其他編碼用于類型限定符。
Objective-C方法編碼

image.png

大千世界,求同存異匕坯;相遇是緣束昵,相識是份,相知便是“猿糞”(緣分)
From MZou

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醒颖,一起剝皮案震驚了整個濱河市妻怎,隨后出現(xiàn)的幾起案子壳炎,更是在濱河造成了極大的恐慌泞歉,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匿辩,死亡現(xiàn)場離奇詭異腰耙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铲球,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門挺庞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稼病,你說我怎么就攤上這事选侨。” “怎么了然走?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵援制,是天一觀的道長隆嗅。 經(jīng)常有香客問我齐帚,道長鲁驶,這世上最難降的妖魔是什么路呜? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任写穴,我火速辦了婚禮于樟,結(jié)果婚禮上洽故,老公的妹妹穿的比我還像新娘蠢棱。我一直安慰自己竟贯,他們只是感情好答捕,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屑那,像睡著了一般噪珊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上齐莲,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天痢站,我揣著相機(jī)與錄音,去河邊找鬼选酗。 笑死阵难,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芒填。 我是一名探鬼主播呜叫,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼空繁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朱庆?” 一聲冷哼從身側(cè)響起盛泡,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娱颊,沒想到半個月后傲诵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡箱硕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年拴竹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剧罩。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡栓拜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惠昔,到底是詐尸還是另有隱情幕与,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布镇防,位于F島的核電站啦鸣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏营罢。R本人自食惡果不足惜赏陵,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲漾。 院中可真熱鬧蝙搔,春花似錦、人聲如沸考传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僚楞。三九已至勤晚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泉褐,已是汗流浹背赐写。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留膜赃,地道東北人挺邀。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親端铛。 傳聞我的和親對象是個殘疾皇子泣矛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容