日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C objc_class 介绍

發(fā)布時間:2025/4/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C objc_class 介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Objective-C objc_class 介紹

NSObject

Objective-C 中 NSObject是大多數(shù)類的根類。

@interface NSObject <NSObject> {Class isa OBJC_ISA_AVAILABILITY; }

它有一個isa屬性,類型是Class.

蘋果已經(jīng)將 ObjC runtime 代碼開源了,我們下載下,看看Class究竟是什么http://opensource.apple.com/tarballs/objc4/objc4-493.9.tar.gz

objc_class

我們能夠在<objc.h>文件中看到Class的定義

typedef struct objc_class *Class; typedef struct objc_object {Class isa; } *id;

Class 是一個 objc_class 結構類型的指針, id是一個 objc_object 結構類型的指針.

objc_class的定義能夠在<runtime.h>里找到

struct objc_class {Class isa;Class super_class;const char *name;long version;long info;long instance_size;struct objc_ivar_list *ivars;struct objc_method_list **methodLists;struct objc_cache *cache;struct objc_protocol_list *protocols;} OBJC2_UNAVAILABLE;

接下來我們來看下每一個屬性的意思

isa

是一個 Objective-C Class 類型的指針. 實例對象有個isa的屬性,指向Class, 而Class里也有個isa的屬性, 指向meteClass. 這里就有個點, 在Objective-C中不論什么的類定義都是對象.

super_class

指向該類的父類, 假設該類已經(jīng)是最頂層的根類(如 NSObject 或 NSProxy),那么 super_class 就為 NULL.

他們的關系呢,這里有個圖http://www.sealiesoftware.com/blog/class%20diagram.pdf


name

我們先看下以下的代碼

id objc_getClass(const char *aClassName) {if (!aClassName) return Nil;// NO unconnected, YES class handlerreturn look_up_class(aClassName, NO, YES); }PRIVATE_EXTERN id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler) {BOOL includeClassLoader = YES; // class loader cannot be skippedid result = nil;struct old_class query;query.name = aClassName;retry:if (!result && class_hash) {// Check ordinary classesmutex_lock (&classLock);result = (id)NXHashGet(class_hash, &query);mutex_unlock (&classLock);}if (!result && includeUnconnected && unconnected_class_hash) {// Check not-yet-connected classesmutex_lock(&classLock);result = (id)NXHashGet(unconnected_class_hash, &query);mutex_unlock(&classLock);}if (!result && includeClassLoader && _objc_classLoader) {// Try class loader callbackif ((*_objc_classLoader)(aClassName)) {// Re-try lookup without class loaderincludeClassLoader = NO;goto retry;}}if (!result && includeClassHandler && objc_classHandler) {// Try class handler callbackif ((*objc_classHandler)(aClassName)) {// Re-try lookup without class handler or class loaderincludeClassLoader = NO;includeClassHandler = NO;goto retry;}}return result; }struct old_class {struct old_class *isa;struct old_class *super_class;const char *name;long version;long info;long instance_size;struct old_ivar_list *ivars;struct old_method_list **methodLists;Cache cache;struct old_protocol_list *protocols;// CLS_EXT onlyconst uint8_t *ivar_layout;struct old_class_ext *ext; };

objc_getClass從一個字串返回一個類,look_up_class,先創(chuàng)建一個old_class對象,name賦值為這個字串,假設找到了,就返回old_class.看下old_class的結構就能看出name這個屬性存的值就是類的名字(事實上name不就是名字嘛)

version

類的版本號信息,默覺得0

info

供執(zhí)行期使用的一些位標識。

instance_size

該類的實例變量大小

ivars
struct objc_ivar_list {int ivar_count;/* variable length structure */struct objc_ivar ivar_list[1]; }

成員變量的數(shù)組

methodLists

方法定義的數(shù)組

struct objc_method_list {struct objc_method_list *obsolete;int method_count;/* variable length structure */struct objc_method method_list[1]; }
objc_cache

指向近期使用的方法.用于方法調用的優(yōu)化.

struct objc_cache {unsigned int mask /* total = mask + 1 */;unsigned int occupied;Method buckets[1]; };
protocols

協(xié)議的數(shù)組

struct objc_protocol_list {struct objc_protocol_list *next;long count;Protocol *list[1]; };

轉載于:https://www.cnblogs.com/claireyuancy/p/6719655.html

總結

以上是生活随笔為你收集整理的Objective-C objc_class 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲不卡av一区二区 | 不卡在线播放 | 日本aaa级片| 成人免费在线播放视频 | 成人影视在线播放 | 日本欧美一区二区三区 | 国产精品国产三级国产aⅴ下载 | 毛片在线网站 | 国产精品a级 | 欧美精品久久久久久久 | 女同av在线播放 | 99爱在线| 国产xxx69麻豆国语对白 | 在线va视频| 午夜伦伦 | 国产精品果冻传媒潘 | 免费看裸体视频网站 | 成年人在线免费 | 日本美女交配 | 欧美操女人| 日本熟妇毛耸耸xxxxxx | 日本a级片网站 | 葵司一区二区 | 91操操操 | 伊人网在线观看 | 男人av资源 | 午夜爽爽爽 | 色爱色| 撸大师av | 善良的女朋友在线观看 | jiizzyou性欧美老片 | 波多野吉衣一区 | 精品中文字幕一区 | 国产精品制服丝袜 | 精品久久人人妻人人做人人 | 丝袜毛片| 日日精品| 亚洲国产中文字幕 | 五月婷婷六月综合 | 麻豆福利影院 | 成人黄色网址在线观看 | 免费99视频 | 伊人网欧美 | jzzjzz日本丰满少妇 | 美国黄色片网站 | 国产精品久久777777毛茸茸 | 国内老熟妇对白hdxxxx | 午夜天堂影院 | 久久国语对白 | 久久九九久久九九 | japanese国产| 午夜影院免费版 | 裸体男女树林做爰 | 国产精品v日韩精品v在线观看 | 91麻豆精品国产91久久久久久久久 | 成人免费视频网 | 日本女优中文字幕 | xx视频在线| 亚洲国产成人无码av在线 | 天天摸天天碰天天爽天天弄 | 天天色天天射综合网 | 国产毛片基地 | 黑巨茎大战欧美白妞 | 亚洲精品人妻无码 | 一级在线看 | 超碰在线公开免费 | 国产精品免费一区二区区 | 夜夜操国产 | caoporn免费在线 | 国产精品扒开腿做爽爽爽男男 | 亚洲精品二区三区 | 国产精品变态另类虐交 | 日本视频网站在线观看 | 99视频在线精品免费观看2 | 欧美一区二区激情视频 | 国产色无码精品视频国产 | 欧美日韩亚洲一区 | 91看片网 | 欧美极品一区二区 | 麻豆精品一区二区三区 | 激情综合婷婷 | 又色又爽又黄gif动态图 | 干爹你真棒插曲免费 | av在线不卡网 | 免费观看黄网站 | 激情丁香 | av网址观看 | 国产成人无码一区二区三区在线 | 国产高清自拍视频 | 亚洲天堂手机在线 | 中国性老太hd大全69 | 麻豆短视频在线观看 | 狠狠干2021| 折磨小男生性器羞耻的故事 | 亚洲免费片 | 丰满大肥婆肥奶大屁股 | 麻豆免费av | 黄瓜视频在线播放 | 婷婷亚洲综合 |