-
Notifications
You must be signed in to change notification settings - Fork 0
iOS objc4
Deepin edited this page Aug 26, 2021
·
1 revision
序:对于oc的底层源码分析,避不可免要要涉及到oc的源码。单独将这篇文章抽出来,以便在其他文章中可以复用,这算不算深刻理解了oc的思想呢^_^
Q:如果我们想查询Objective-C的源码,要怎么办呢?
A:可以通过Apple Open Source, 最简单的办法,还是直接下载objc4
打开下载后objc4代码,可以找到结构如下:
- objc
- Public Headers
- NSObjCRuntime.h
- NSObject.h
- message.h
- objc-api.h
- objc-auto.h
- objc-exception.h
- objc-sync.h
- objc.h
- runtime.h
- Private Headers
- objc-internal.h
- objc-abi.h
- maptable.h
- objc-gdb.h
- Project Headers
- objc-config.h
- objc-file.h
- objc-file-old.h
- objc-initialize.h
- objc-loadmethod.h
- objc-os.h
- objc-private.h
- objc-references.h
- objc-runtime-new.h
- objc-runtime-old.h
- objc-sel-set.h
- objc-weak.h
- Obsolete Headers - 废弃的就不列了
- Obsolete Source - 废弃的就不列了
- Source - 只挑部分列出来
- hashtable2.mm
- maptable.mm
- NSObject.mm
- Protocol.mm
- objc-accessors.mm
- objc-auto.mm
- objc-block-trampolines.mm
- objc-cache.mm
- objc-cache-old.mm
- objc-class-old.mm
- objc-class.mm
- objc-errors.mm
- objc-exception.mm
- objc-file.mm
- objc-file-old.mm
- objc-initialize.mm
- objc-layout.mm
- objc-load.mm
- objc-loadmethod.mm
- objc-lockdebug.mm
- objc-opt.mm
- objc-os.mm
- objc-references.mm
- objc-runtime-new.mm
- objc-runtime-old.mm
- objc-runtime.mm
- objc-sel-set.mm
- objc-sel-table.s
- objc-sel.mm
- objc-sel-old.mm
- objc-sync.mm
- objc-typeencoding.mm
- 剩下一些*.s & *.d文件不列
- Public Headers
可以看到,Public Headers
里面正好是我们之前苹果公开的头文化,Private Headers
以及Project Headers
也是头文件只是没有公开,Obsolete Headers
与Obsolete Source
已经废弃,就不看到,主要看Source
里面,其中message.mm、NSObject.mm、objc.mm、runtime.mm等文件是最最常见的.
很多涉及源码的分析,都需要通过这个方式来查看。