我试图了解在编译时和运行时导入文件时真正发生了什么。
指令本质上是否#import "file.h"
将整个复制并粘贴file.m
到当前文件中?或者它只是指定该文件的位置并在实例化时创建必要的属性?
我试图了解在编译时和运行时导入文件时真正发生了什么。
指令本质上是否#import "file.h"
将整个复制并粘贴file.m
到当前文件中?或者它只是指定该文件的位置并在实例化时创建必要的属性?
导入由 C、C++ 和 Objective C 中的预处理器处理,它为编译器创建一个大文件。每个 *.m、*.c、*.cpp 文件都将获得所有导入。
您可以使用 -E 标志在命令行上编译代码,以查看添加所有 #import 后的结果。
此外,这个问题详细介绍了#include 与 #import,因此它可能会给您更多的见解:
Objective-C 中的#import 和#include 有什么区别?
如您所见,有大量额外的导入会减慢编译速度。Jetbrain 的 AppCode 有一个功能可以优化导入:
语句本质上是否
#import file.h
将整个 file.m 复制并粘贴到当前文件中?
它不是一个语句,它是一个预处理器指令。
您在文件名周围缺少引号或尖括号。
#import "file.h"
确实将整个file.h
文件代替此指令复制到当前文件中。但是,它不会对file.m
.