iOS中的物件

語言: CN / TW / HK

這是我參與11月更文挑戰的第6天,活動詳情檢視:2021最後一次更文挑戰

今天陽光正好,微風不燥~

真是個嘮嗑的好天氣~

今天我們嘮一嘮iOS中的物件

說起物件,老鐵們知道iOS中的物件有幾種呢~~~

iOS中的三種物件

  1. 例項物件(instance)
  2. 類物件(class)
  3. 元類物件(meta-class)

比如此時我們有兩個經典的兩個類,Persion繼承自NSObject,Student繼承自Persion ``` @interface Persion : NSObject @property (nonatomic, copy) NSString *name;//佔8個位元組 @property (nonatomic, assign) int age;//佔4個位元組 @end

@interface Student : Persion @property (nonatomic, copy) NSString *teacher; @end ```

例項物件

例項物件就是我們通過alloc init 生成的類,比如: Student *s = [[Student alloc] init];//例項物件 那麼例項物件在記憶體中都儲存了那些東西呢? 1. isa 指標 2. 成員變數 其中isa指標指向例項物件的類物件,成員變數就是例項物件的屬性變數

在當前這個例子中,isa指標指向 Student類,成員變數就只有teacher

類物件

類物件就是我們所說的類,可以通過class方法,或者object_getClass()獲得。

image.png 類物件中主要儲存了: 1. isa指標 2. superClass指標 3. 類的屬性資訊(@property)類的物件方法資訊 4. 類的協議資訊、類的成員變數資訊

其中: - isa指標指向元類物件 - superClass指標指向父類物件,這裡Student的父類就是Persion - 類的屬性資訊指的是例項物件的屬性資訊,這裡指teacher的資訊 - 類的物件方法資訊就是例項方法資訊 - 類的協議資訊就是類準守的協議資訊 - 類的成員變數資訊就是物件的成員變數

元類物件

每一個類物件在記憶體中都有一個元類物件與之對應,可以通過object_getClass()獲得

image.png

需要注意的是通過object_getClass()方法獲取元類物件是,傳參是類物件

那麼元類物件中都有什麼呢: 1. isa指標 2. superClass指標 3. 類的類方法資訊

其中: - isa 指標指向根元類,這裡就是指向了nsobject的元類 - superClass 指標指向父類的元類,這裡就指向了Persion的元類

放一張經典的圖:

圖片1.png

圖中的SubClass可以看做是Student類,SuperClass可以看做是Persion類,Root class就是NSObject 類

以上就是對iOS中的物件的介紹~~~