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