iOS中的物件
這是我參與11月更文挑戰的第6天,活動詳情檢視:2021最後一次更文挑戰
今天陽光正好,微風不燥~
真是個嘮嗑的好天氣~
今天我們嘮一嘮iOS中的物件
說起物件,老鐵們知道iOS中的物件有幾種呢~~~
iOS中的三種物件
- 例項物件(instance)
- 類物件(class)
- 元類物件(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()
獲得。
類物件中主要儲存了:
1.
isa
指標
2. superClass
指標
3. 類的屬性資訊(@property)類的物件方法資訊
4. 類的協議資訊、類的成員變數資訊
其中:
- isa
指標指向元類物件
- superClass
指標指向父類物件,這裡Student
的父類就是Persion
- 類的屬性資訊指的是例項物件的屬性資訊,這裡指teacher
的資訊
- 類的物件方法資訊就是例項方法資訊
- 類的協議資訊就是類準守的協議資訊
- 類的成員變數資訊就是物件的成員變數
元類物件
每一個類物件在記憶體中都有一個元類物件與之對應,可以通過object_getClass()
獲得
需要注意的是通過object_getClass()方法獲取元類物件是,傳參是類物件
那麼元類物件中都有什麼呢:
1. isa
指標
2. superClass
指標
3. 類的類方法資訊
其中: - isa 指標指向根元類,這裡就是指向了nsobject的元類 - superClass 指標指向父類的元類,這裡就指向了Persion的元類
放一張經典的圖:
圖中的SubClass可以看做是Student類,SuperClass可以看做是Persion類,Root class就是NSObject 類
以上就是對iOS中的物件的介紹~~~