Hello World

1
2
3
4
5
6
7
#import <Foundation/Foundation.h>
int main (int argc, contst char *argv)
{
NSLog (@"Hello World!");
return (0);
} // main

#import

#import 是 GCC 编译器提供的,XCode 在编译 Objective-C、C 和 C++ 程序时都会使用它。#import 可保证头文件只被包含一次,而不论此命令实际在那个文件中出现了多少次。

在 C 语言中,程序员通常使用基于 #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() 和 @“字符串”

NSLog 作用类似于 C 语言的 printf() ,调用方法也很类似。但我们建议用 NSLog() ,因为它添加了特性,例如时间戳、日期戳和自动附加换行符(\n)等。

@ 符号是 Objective-C 在标准 C 语言基础上添加的特性之一。双引号中的字符串前有一个 @ 符号,这表示引用的字符串应该作为 Cocoa 的 NSString 元素来处理。NSString 元素封装了许多特性,Cocoa 在需要字符串时可以随时使用它们。下面是一些 NSString 的功能。

  • 告知其长度;
  • 将自身与其他字符串比较;
  • 将自身转换为整型值或浮点值。

BOOL 类型

C 语言拥有布尔数据类型 bool,它具有 true 值和 false 值。Objective-C 提供了相似的类型 BOOL ,它具有 YES 值和 NO 值。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#import <Foundation/Foundation.h>
// return NO if the two integers have the same
// value. YES otherwise
BOOL areIntsDifferent (int thing1, int thing2)
{
if (thing1 == thing2) {
return (NO);
} else {
return (YES);
}
} // areIntsDifferent
// given a YES value, return the human-readable
// string "YES", Otherwise return "NO"
NSString *boolString (BOOL yesNo)
{
if (yesNo == NO) {
return (@"NO");
} else {
return (@"YES");
}
} // boolString
int main (int argc, const char *argv[])
{
BOOL areTheyDifferent;
areTheyDifferent = areIntsDifferent (5, 5);
NSLog (@"are %d and %d different? %@",
5, 5, boolString(areTheyDifferent));
NSLog (@"are %d and %d different? %@",
23, 42, boolString(areTheyDifferent));
return (0);
} // main

注意最后一个 NSLog 中的 %@ 。使用过 NSLog() 输出任意对象时,都会试用 %@ 格式说明。在使用这个说明符时,对象通过一个名为 description 的方法提供自己的 NSLog() 格式(实现方法见 面向对象)。NSString 的 description 方法可简单输出字符串中的字符。

有用的链接

Comments