成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Runtime系列(類與元類)

移動開發
如果你讀過 Runtime系列(引文),可能會在其中發現一個詞:類對象。那么什么是類對象?

如果你讀過 Runtime系列(引文),可能會在其中發現一個詞:類對象。那么什么是類對象?

先看一段代碼

  1. NSArray *arr = [NSArray array]; 

他是怎么運行的?

上篇文章中提到,[receiver message]底層會調用id objc_msgSend(id self, SEL op, ...)。再來回顧一下id是什么

  1. struct objc_object { 
  2.     Class isa  OBJC_ISA_AVAILABILITY; 
  3. }; 
  4.  
  5. typedef struct objc_object *id; 

id指向一個對象,可以猜測[NSArray array]中的NSArray也是一個對象。可NSArray怎么會是對象?這就要引出本文的另一個主角元類了。

元類

其實NSArray和arr一樣,也是對象,叫做類對象。

Class.png

可以看到,Class中也有個isa指針,他的指向就是自身的元類。

元類是類對象的類,類對象是元類的實例。

基于這種設計模式,不難發現:

1.我們以前調用 "+" 開頭的類方法實際是在調用元類的對象方法
2.由于每個類有且只有一個,所以每個類對象都是其對應元類的單例

那么,元類是對象嗎?
答案是肯定的,元類是對象。
如果元類也是對象,元類的類又是什么?

元類的類

再來看一張網上的示意圖

示意圖.png
  • 圖解
    目前我所接觸到的oc對象都繼承自NSObject,不知道是否還有其他的Root class,這里以NSObject為例。
1.每個實例對象的類都是類對象,每個類對象的類都是元類對象,每個元類對象的類都是根元類(root meta class的isa指向自身)
2.類對象的父類最終繼承自根類對象NSObject,NSObject的父類為nil
3.元類對象(包括根元類)的父類最終繼承自根類對象NSObject

可見,類與元類是一個閉環。

責任編輯:倪明 來源: 簡書
相關推薦

2024-01-29 16:47:44

函數封裝開發

2016-10-25 14:27:32

metaclasspython

2016-09-06 19:32:11

PythonWeb

2024-05-20 09:26:42

Python裝飾器函數

2021-04-26 10:01:25

JavaJava基礎Runtime

2021-03-22 10:20:04

Python元類代碼

2015-08-07 09:33:24

RuntimeModel

2010-06-09 10:04:59

UML類圖

2015-08-06 15:20:21

runtimeIOS開發

2024-04-02 11:34:09

成員對象封閉類C++

2010-06-10 16:09:28

路由選擇協議

2009-07-22 09:31:59

Scala類類層級Java類

2011-07-15 13:49:30

C++友元函數友元類

2010-01-15 18:35:25

C++的類

2013-05-20 17:04:09

2011-08-08 09:22:10

Python

2023-12-07 09:07:58

2017-09-20 08:07:32

java加載機制

2024-03-08 08:26:25

類的加載Class文件Java

2013-05-29 10:28:05

綜合布線系統綜合布線技術綜合布線施工步驟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看日韩av | 国产成人精品免费 | 一区二区三区在线 | 国产精品久久久久久中文字 | 国产精品一区二区日韩 | 国产午夜精品久久久 | 999观看免费高清www | 国产一级视频免费播放 | 91色啪| 精品亚洲一区二区三区 | 人人看人人爽 | 精品国产精品三级精品av网址 | 国产一区不卡 | 福利视频一区二区三区 | 欧美国产精品久久久 | 黄瓜av| 在线免费观看a级片 | 久久视频精品 | 欧美在线a | 成人av在线网站 | 中文字幕第5页 | 国产一区免费视频 | 午夜久久久久久久久久一区二区 | 久久丁香 | 国产在线一区二区 | 天天色综网 | 激情六月丁香 | 欧美视频精品 | 九九在线精品视频 | 91福利影院| www.97zyz.com| 亚洲 欧美 在线 一区 | 91精品久久久久 | 中文字幕av一区 | eeuss国产一区二区三区四区 | 久久久国产精品 | www.久久99| 中文字幕在线不卡 | 久久精品视频一区二区三区 | 91毛片在线看 | 久久精品国产一区 |