Object C的物件模型

2021-09-01 19:45:07 字數 797 閱讀 6860

在object-c的型別結構中,有幾個比較重要的概念object(例項),class(類),metaclass(元類),rootclass(根類),rootclass『s metaclass(根元類)。有物件導向程式設計語言背景的同學可以很容易理解類和例項。在object-c中,object本質上是乙個struct,在這個struct中會儲存乙個名為isa的指標,該指標會指向該object的類。如下:

typedef struct objc_object *id;

object的類中儲存了該object實現的所有方法(即例項方法),另外還有類中還儲存了父類的指標,這樣object的方法呼叫過程可以描述如下:

[list]

[*]1. 會根據isa找到類,

[*]2. 從類中尋找方法,

[*]3. 找到的話,直接執行。

[*]4. 沒找到的話,繼續沿著父類的指標往上找,直到找到為止。

[*]5. 最後都沒找到,則報錯。

[/list]

在object-c中,類同樣是乙個object,類例項同樣有自己的isa,這就是元類。元類中儲存了所有的類方法和父元類的指標。現在我們知道,物件是類的例項,類是元類的例項,那麼元類呢? 元類是根元類的例項,根元類呢? 根元類是自己的例項,迴圈到此收尾。這就是整個object-c語言的尋類過程。

那麼,繼承關係呢?object-c中類的繼承和元類的繼承是並行的,如果類之間繼承了,那麼他們的元類也就繼承了,直到根元類,根元類的父類是根類。這就是整個object-c的物件模型。

[img]

Object c物件導向(上)

1.面向過程和物件導向 面向過程 一步一步的進行,第一步做什麼,第二部執行什麼。物件導向 2.類和物件 類 是某一批物件的抽象 物件才是乙個具體存在的例項 定義類 inte ce myclass nsobject 實現類 implementation myclass 定義變數 person pers...

object c多個物件的記憶體管理

開啟xcode,新建command line tool工程 type選擇foundation 直到完成 在工程下新建檔案 book和person book.m import book.h implementation book void setprice int price int price vo...

02 Object C 物件導向

1.物件導向基本術語 2.類和物件 inte ce car nsobject void run 方法,跑 end 1.成員變數 inte ce的大括號 中宣告的變數 wheels speed inte ce的大括號和函式的大括號是不一樣的 缺省會初始化為0 2.public public可以讓car...