1 | #import <Foundation/Foundation.h> |
#import
是 GCC 编译器提供的,XCode 在编译 Objective-C、C 和 C++ 程序时都会使用它。#import
可保证头文件只被包含一次,而不论此命令实际在那个文件中出现了多少次。
#ifdef
命令的方案来避免一个文件包含另一个文件,而后者又包含第一个文件的情况。
而在 Objective-C 中,程序员使用 #import
来实现这个功能。
#import <Foundation/Foundation.h>
语句告诉编译器查看 Foundation 框架中的 Foundation.h 。苹果将 Cocoa、Carbon、QuickTime 和 OpenGL 等技术作为框架集提供。Cocoa 的组成部分由 Foundation 和 Application Kit(也称为 AppKit)框架。还有一个支持框架的套件,包含 Core Animation 和 Core Image,这也为 Cocoa 提供了多种精彩功能。
Foundation 框架处理的是用户界面之下的层(layer)中的特性,例如数据结构和通信机制。本书中所有程序都以 Foundation 框架为基础。如果你想知道 Foundation 框架包含哪些头文件,可以查看其 Header 目录(/System/Library/Frameworks/Foundation.framework/Headers/)。
NSLog 作用类似于 C 语言的 printf()
,调用方法也很类似。但我们建议用 NSLog()
,因为它添加了特性,例如时间戳、日期戳和自动附加换行符(\n
)等。
@
符号是 Objective-C 在标准 C 语言基础上添加的特性之一。双引号中的字符串前有一个 @
符号,这表示引用的字符串应该作为 Cocoa 的 NSString 元素来处理。NSString 元素封装了许多特性,Cocoa 在需要字符串时可以随时使用它们。下面是一些 NSString 的功能。
C 语言拥有布尔数据类型 bool,它具有 true 值和 false 值。Objective-C 提供了相似的类型 BOOL ,它具有 YES 值和 NO 值。
示例:
1 | #import <Foundation/Foundation.h> |
注意最后一个 NSLog 中的 %@
。使用过 NSLog()
输出任意对象时,都会试用 %@
格式说明。在使用这个说明符时,对象通过一个名为 description 的方法提供自己的 NSLog() 格式(实现方法见 面向对象)。NSString 的 description 方法可简单输出字符串中的字符。