|
|
1
1
|
|
|
2
0
A.h级
A.m级
B.m级
C.h类
子类包含导入到其超级类实现文件中的头。
从评论中:
A.h级
C.h类
C.m类
运行时:
ClassC不知道ClassA.m中定义的宏,但这是因为在实现中定义的宏实际上不是类的逻辑部分。ClassA也不“知道”宏。这样的宏不在类的名称空间中,它只是由编译器执行的简单文本替换。ClassC不知道这样的替换,就像它知道ClassA在它的一个方法中的某个地方使用了实际的“5”一样。ClassC不能固有这样一个宏,因为它没有固有的属性。 ClassC知道在ClassA中定义的宏,因为编译器生成的ClassC的真正逻辑头是导入创建的链中所有头的并集。C类 ClassC和ClassA了解ClassB的方式相同。@class指令使编译器查找ClassB的定义,并在ClassA.m中找到它。在幕后没有秘密导入大量头文件。这是家长们提出的问题。 |
|
|
KanKonga · 为什么这个swift代码没有显示在文本字段中? 2 年前 |
|
|
Community wiki · 目标的Xcode构建阶段的自动更新? 2 年前 |
|
|
Anton Timonin · 如何正确地将动态pod库更改为静态? 3 年前 |
|
|
Igor · 在OSX中,捆绑包的用户首选项在哪里? 3 年前 |
|
|
narner · 从Swift包创建Cocoapods框架 3 年前 |