0

我试图了解在编译时和运行时导入文件时真正发生了什么。

指令本质上是否#import "file.h"将整个复制并粘贴file.m到当前文件中?或者它只是指定该文件的位置并在实例化时创建必要的属性?

4

2 回答 2

2

导入由 C、C++ 和 Objective C 中的预处理器处理,它为编译器创建一个大文件。每个 *.m、*.c、*.cpp 文件都将获得所有导入。

您可以使用 -E 标志在命令行上编译代码,以查看添加所有 #import 后的结果。

此外,这个问题详细介绍了#include 与 #import,因此它可能会给您更多的见解:

Objective-C 中的#import 和#include 有什么区别?

如您所见,有大量额外的导入会减慢编译速度。Jetbrain 的 AppCode 有一个功能可以优化导入:

http://www.jetbrains.com/objc/features/

于 2013-04-28T04:41:15.687 回答
1

语句本质上是否#import file.h将整个 file.m 复制并粘贴到当前文件中?

  1. 它不是一个语句,它是一个预处理器指令。

  2. 您在文件名周围缺少引号或尖括号。

  3. #import "file.h" 确实将整个file.h文件代替此指令复制到当前文件中。但是,它不会对file.m.

于 2013-04-28T03:52:28.503 回答