IOS底層資料結構 class

2022-06-19 09:18:10 字數 1284 閱讀 8039

typedef struct objc_class *class;

/* 這是由編譯器為每個類產生的資料結構,這個結構定義了乙個類.這個結構是通過編譯器在執行時產生,在執行時傳送訊息時使用.因此,一些成員改變了型別.編譯器產生"char* const"型別的字串指標替代了下面的成員變數"super_class"

*/struct objc_class ;

typedef struct objc_method *method;

/* 編譯器依據類中定義的方法為該類產生乙個或更多這種這種結構.

乙個類的實現可以分散在乙個檔案中不同部分,同時類別可以分散在不同的模組中.為了處理這個問題,使用乙個單獨的方法鍊錶 */

struct objc_method

;

typedef struct objc_ivar *ivar;

/* 編譯器依據類中定義的例項變數為該類產生乙個或更多這種這種結構 */

struct objc_ivar

;

typedef struct objc_category *category;

/* 編譯器為每個類別產生乙個這樣的結構.乙個類可以具有多個類別同時既包括例項方法,也可以包括類方法*/

struct objc_category

;

typedef struct objc_property *objc_property_t;

id (*imp)(id, sel, ...)

typedef struct objc_selector *sel;

struct objc_selector

;

struct objc_method_list

;

struct objc_cache

;

struct objc_protocol_list

;

typedef struct objc_object *id;

struct objc_object

;

struct objc_super

;

redis set底層資料結構

redis的集合物件set的底層儲存結構特別神奇,我估計一般人想象不到,底層使用了intset和hashtable兩種資料結構儲存的,intset我們可以理解為陣列,hashtable就是普通的雜湊表 key為set的值,value為null 是不是覺得用hashtable儲存set是一件很神奇的事...

C vector底層資料結構

vector 其底層資料結構是陣列,由於陣列的特點,vector也具有以下特性 1 o 1 時間的快速訪問 2 順序儲存,所以插入到非尾結點位置所需時間複雜度為o n 刪除也一樣 3 擴容規則 當我們新建乙個vector的時候,會首先分配給他一片連續的記憶體空間,如std vector vec,當通...

Redis底層資料結構?

福哥口訣法 簡鏈字跳整 壓快壓 sds synamic string 簡單動態字串。支援自動動態擴容的位元組陣列 list 鍊錶 雙端鍊錶。dict 字典。使用雙雜湊表實現的,支援平滑擴容的字典 zskiplist 跳躍表。附加了後向指標的跳躍表 intset 整數集合。用於儲存整數數值集合的自有結...