iOS開發之runtime(27): _read_images

本系列博客是本人的源碼閱讀筆記,如果有 iOS 開發者在看 runtime 的,歡迎大家多多交流。爲了方便討論,本人新建了一個微信羣(iOS技術討論羣),想要加入的,請添加本人微信:zhujinhui207407,【加我前請備註:ios 】,本人博客http://www.kyson.cn 也在不停的更新中,歡迎一起討論


本文完整版詳見筆者小專欄:https://xiaozhuanlan.com/runtime

概述

之前已經大概說過 __objc_classlist 這個 section 表示的是項目中全部類列表,與之關聯的一個 section 爲: __objc_classrefs ,表示項目中被引用的類列表。列一張表看一下:

__objc_classlist __objc_classrefs
含義 項目中全部類列表 項目中被引用的類列表
對應方法 _getObjc2ClassList _getObjc2ClassRefs
對應全局變量 gdb_objc_realized_classes noClassesRemapped

關於這兩個屬性,對應的代碼在方法 _read_images 中:
創建:

gdb_objc_realized_classes =
    NXCreateMapTable(NXStrValueMapPrototype, namedClassesSize);

插入:

- Class newCls = readClass(cls, headerIsBundle, headerIsPreoptimized);
    - addNamedClass(cls, mangledName, replacing);
        - NXMapInsert(gdb_objc_realized_classes, name, cls);
__objc_selrefs
含義 方法列表
方法名 _getObjc2SelectorRefs
對應全局變量 namedSelectors
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章