Importing headers 接入头文件

在上一小节里,有一行代码我没有解释,就是这一行:

#import <Foundation/Foundation.h>。

这是一个预处理器指令,在之前的章节我已经简要提到过「预处理」这个概念。这意味着即使在构建代码之前,这个代码也被预处理器所替代。所有以"#"开头的代码行都是预处理器指令,对付它们要小心。

这行代码的具体意思是「找到"Foundation"(苹果的基本 Objective-C 框架)的头文件,并粘贴在这里」。预处理器语义上接受了 "Foundation.h" 这个头文件的内容,而这个头文件本身接入许多其他的头文件,并复制在"#import"行代替原来的代码。

如果你之前写过 C 或 C++ ,你会对 #include 更熟悉,它和 #import 几乎是在做同样的事情。然而,#import 有一个微妙的特性,这使它更易用:如果你在文件头部试用 #import,在整个文件里,它只被接入一次,而 #include 则可能被接入数次。 C 语言的程序员经常要通过编写头文件守卫(header guards)的方法,解决 #include 的问题,但 Objective-C 的 #import 自动解决了这个问题。

当你 "#import" 了一个系统库,你要把库的名字放在一对尖括号里。例如,#import 。但是如果你想导入自己的头文件时,就要使用双引号,比如:#import"MyClass.h"。区分这两者非常重要:使用尖括号表示「在系统库中搜索该头文件」,而使用双引号表示「同时在系统库和项目中搜索该头文件」。

results matching ""

    No results matching ""