我知道.m文件是实现的地方,.h文件有方法签名等.当想要在他的类中使用某个类时,他会导入.h文件.预处理器使用.h文件的内容替换导入的.h文件.我不明白的是,如何通过预处理器带来.h内容来实现对实现的访问?什么是允许这样的运行时机制?
导入.h文件实际上并不是那样的,所以你应该感到困惑!
编译程序时,每个文件都被编译为"目标文件",并且这些文件都链接在一起成为可执行程序.正是这个链接步骤提供了对实现的访问.
同样,您使用的任何库都需要链接(Xcode的项目模板为您为Foundation,UIKit/AppKit和其他常用库执行此操作).这种类型的链接在编译时部分完成,然后在您的应用程序启动时动态完成,以便它获取操作系统附带的库的版本,而不是您编译的版本.
导入标题只是让编译器知道链接库中的内容,以便它可以编译引用它们的代码.如果您查找动态使用的功能而不是让编译器执行它(通过dlopen,dlsym,NSClassFromString,NSSelectorFromString等...),那么您可以使用链接代码而无需导入其标头.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |