-
Notifications
You must be signed in to change notification settings - Fork 0
iOS objc.h
objc属于Objective-C这门语言中的一个重要文件,接下来,我们将逐步解开objc的神秘面纱。
在xcode中打开一个任意一个objc项目,按下shift + command + O组合快捷键,
在"open quickly"搜索框中,输入objc.h, 敲下enter键,即可看到objc.h头文件的内容如下图:

我们在顶部路径区域,操作,点击usr/include可以看到对应iOS结构如下图:

我们可以看到主结构如下:
- Simulator - iSO 14.5
- Frameworks
- DeveloperFrameworks
- usr/include
而objc.h属于usr/include目录中的其中一项,其他挑选一些常见的列举如下:
- usr/include
- 目录
- architecture
- arm
- arm64
- CommonCrypto
- device
- dispatch
- i386
- mach
- mach_debug
- mach-o
- machine
- malloc
- os
- pthread
- secure
- sys
- unicode
- uuid
- voucher
- 独立.h文件
- assert.h
- Block.h
- cache.h
- math.h
- pthread.h
- regex.h
- stdio.h
- sqlite3.h
- 目录
等耳熟能祥的名字. 若是需要研究其他类,可以参考路径来查找对应的文件。
objc目录结构如下:
- objc
- message.h
- module.modulemap
- NSObjCRuntime.h
- NSObject.h
- objc-api.h
- objc-auto.h
- objc-exception.h
- objc-sync.h
- objc.h
- ObjectiveC.apinotes
- runtime.h
其中message.h、NSObject.h、objc.h、runtime.h等文件是最最常见的,接下来我们先来看看今天的主角:objc.h。
/// An opaque type that represents an Objective-C class.
typedef struct objc_class *Class;
/// Represents an instance of a class.
struct objc_object {
Class _Nonnull isa OBJC_ISA_AVAILABILITY;
};
/// A pointer to an instance of a class.
typedef struct objc_object *id;
#endif
/// An opaque type that represents a method selector.
typedef struct objc_selector *SEL;可以看出我们常用的Class是objc_class类型的结构体指针,整理几者如下:
typedef struct objc_class *Class;
typedef struct objc_object *id;
typedef struct objc_selector *SEL;Class、id、SEL分别对应三种结构体指针
以上都是objc.h头文件对外公开的信息, 若是还需要更多的信息,我们就需要查看源码了: objc4
打开下载后objc4代码,可以找到
https://www.jianshu.com/p/ead476cdb828 https://www.jianshu.com/p/41735c66dccb
https://juejin.cn/post/6844903639094394893 https://blog.csdn.net/u014773226/article/details/54617716 https://www.jianshu.com/p/62913d6cbc40 https://juejin.cn/post/6844903633113317390 https://juejin.cn/post/6844903600968171533
https://www.jianshu.com/p/f1b2085c4179 https://www.jianshu.com/p/15071d70034e https://www.cnblogs.com/-boy/p/4065783.html https://www.baidu.com/s?wd=oc%20struct%E5%B5%8C%E5%A5%97&rsv_spt=1&rsv_iqid=0xdea253aa0000b849&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=24&rsv_sug1=14&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=8957&rsv_sug4=8957
https://www.baidu.com/s?wd=ios%20property%20syn&rsv_spt=1&rsv_iqid=0x8d5cff410001515e&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=23&rsv_sug1=16&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=12149&rsv_sug4=12149 https://www.jianshu.com/p/50e290f21ff4
https://www.baidu.com/s?wd=%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E4%B8%8E%E6%8C%87%E9%92%88%E5%87%BD%E6%95%B0%E7%9A%84%E5%8C%BA%E5%88%AB&rsv_spt=1&rsv_iqid=0x8a559e2000075e08&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ts_3&oq=%25E5%2587%25BD%25E6%2595%25B0%25E6%258C%2587%25E9%2592%2588&rsv_btype=t&rsv_t=2f46DaodzOoTSftFjxbBKQarQQUjNJ64Tkjukn4PR7P8GtPOg%2FTs3C%2Bed%2Fq4LiKykzXv&rsv_sug3=12&rsv_sug1=9&rsv_sug7=100&rsv_pq=d98cb0f10006ae22&rsv_sug2=1&prefixsug=%25E5%2587%25BD%25E6%2595%25B0%25E6%258C%2587%25E9%2592%2588&rsp=3&rsv_sug4=1882 http://c.biancheng.net/view/228.html https://zhidao.baidu.com/question/488037128770875652.html
https://www.baidu.com/s?wd=c%E4%B8%AD%E7%9A%84*%E4%B8%8E%26&rsv_spt=1&rsv_iqid=0xdd35cac500018998&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=9&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=8759&rsv_sug4=8759 https://zhidao.baidu.com/question/1372805343211755539.html