Hello World Objective C XCode 的使用 Objective C 中的面向对象 Hello World Objective C 内容概述 使用XCode 编辑、编译、运行Hello World 使用命令行编译、编辑并运行Hello World Objective C中的注释 使用NSLog输出变量 NSLog的格式化输出 1.1 使用XCode 编辑、编译和运行Hello World 在上一章中我们学习了XCode的使用,本章我们将讲述如何编写简单的Objective C 程序,熟悉使用XCode编写、编译和运行应用程序。 使用XCode编写"Hello World"应用程序需要如下步骤: 启动XCode选择"Create a new Xcode project"。如下图所示。 选择OS X中的Application的"Command Line Tool"。如下图所示。 选择下一步,输入项目详细信息,如下图所示。 选择下一步,并选择项目保存路径,生成项目的结构如下所示。 这里左边chapter03-01是项目源码,Supporting Files里面是一个预编译文件,Frameworks中是系统使用的框架,Products是项目的可执行文件。而右边是项目的配置信息,后面我们将详细讲述。 下面我们来重点分析main.m程序。 // main.m // chapter03-01 // // Created by amaker on 2/27/13. // Copyright (c) 2013 amaker. All rights reserved. // // 导入包 #import \<Foundation/Foundation.h\> // 入口函数,程序从这里开始执行 int main(int argc, const char \* argv[]) { // 内存管理块 @autoreleasepool { // 输出语言 NSLog(@"Hello, World!"); } // 函数返回值 return 0; } "//"打头的行注释,#import \<Foundation/Foundation.h\>语句是导入需要的头文件,因为NSLog类是在该头文件中定义的。int main(int argc, const char * argv[]),该语言是主函数的定义,该函数有int类型的防护值 型的返回值,并且可以接收两个参数,函数体由{}包含,@autoreleasepool {}该标注是内存管理释放池(后续章节将重点讲述),NSLog(@"Hello, World!");是输出语句,可以输出一个字符串。return 0 是函数的返回值。 点击工具栏的运行按钮,或者按Command+r键运行程序,输出结果如下所示。 上述步骤演示了如何使用Xcode创建一个简单的"Hello World"应用程序的过程。 1.2 使用命令行编辑、编译并运行Hello World 为了进一步深入了解Objective C程序的编译、运行过程,这里我们使用文本编辑器vi和命令行编译器gcc来编辑、编译并运行一个简单的Objective C程序。实现步骤如下所示。 配置命令行工具套件,在Xcode的菜单中选择"Preferences",在弹出的对话框中选择"Components",选择Command Line Tools进行下载安装。 打开终端(Terminal)程序,使用vi编辑程序源码。 打开vi后输入i切换为插入模式,并输入如下代码。 选择"esc"键退出插入模式到命令模式,输入:wq 保存退出vi。 使用下面命令来编译上述文件。 运行程序如下所示。 1.3 Objective C中的注释 Objective C中的注释本质上和c语言中的注释是相同的,分为行注释和块注释。行注释以// 打头,块注释是/* 块注释内容*/。例如: // 这是行注释 /*内容比较多时使用块注释*/ 程序中的注释会被编译器忽略。 1.4 使用NSLog输出变量 NSLog是一个常用的输出函数,该函数的参数是可变参数,可以格式化输出一个或多个参数,函数定义如下所示,void NSLog(NSString *format,…);。下面程序定义了int类型、float类型和NSString类型的三个变量并且使用NSLog将其输出。程序代码如下: #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 定义int类型变量 int i = 100; // 定义float类型变量 float pi = 3.14; // 定义字符串类型变量 NSString \*s = @"iOS应用开发详解"; NSLog(@"i=%d",i); NSLog(@"pi=%f",pi); NSLog(@"s=%@",s); } return 0; } 下一节我们将详细讲述NSLog的格式化输出。 1.4 NSLog的格式化输出 NSLog定义在NSObjCRuntime.h中,函数格式为 void NSLog(NSString *format, …);基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字符是NSString的对象,而不是chat *这种字符串指针。 为了方便读者使用这里列出了常用NSLog格式化输出表格。如下所示。 输出标示符 描述 %@ 输出Objective-C对象,例如NSString等 %d,%D 输出int类型 %u,%U 输出无符号int类型(unsigned int) %x,% 输出16进制int类型 %o,%O 输出8进制int类型 %f 输出浮点类型 %e,%E 输出科学计数法格式浮点类型 %c,%C 输出单个字符 %s,%S 输出c字符串 另外,还有一下长度修饰符例如:l标示长整型等。下面通过一段代码来展示NSLog格式化输出的使用。 #import \<Foundation/Foundation.h\> int main(int argc, const char \* argv[]) { @autoreleasepool { // 输出一个字符串 NSLog(@"This is a NString"); // 输出一个对象 NSObject \*obj = [[NSObject alloc]init]; NSLog(@"obj=%@",obj); // 输出一个整型变量 int i = 100; NSLog(@"i=%d",i); // 输出一个长整形变量 long l = 123456; NSLog(@"l=%ld",l); // 输出一个无符号长整型变量 unsigned long ul = 98765; NSLog(@"ul=%lu",ul); // 输出NSInteger NSInteger ld = 98765; NSLog(@"ld=%ld",ld); // 输出NSUInteger NSUInteger ul2 = 98765; NSLog(@"ul2=%lu",ul2); // 输出8进制整型 int o = 123; NSLog(@"o=%o",o); // 输出16进制整型 int i16 = 1234; NSLog(@"i16=%x",i16); // 输出一个浮点型 float f = 3.14; NSLog(@"f=%f",f); // 以科学计数法输出 float f2 = 314.2345; NSLog(@"f2=%E",f2); // 输出单个字符 char c = 'A'; NSLog(@"c=%c",c); // 输出c字符串 char \*str = "Hello World"; NSLog(@"str=%s",str); } return 0; } 程序输入结果如下所示: XCode 的使用 Objective C 中的面向对象