Hello World 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"应用程序需要如下步骤:

  1. 启动XCode选择"Create a new Xcode project"。如下图所示。

  2. 选择OS X中的Application的"Command Line Tool"。如下图所示。

  3. 选择下一步,输入项目详细信息,如下图所示。

  4. 选择下一步,并选择项目保存路径,生成项目的结构如下所示。

这里左边chapter03-01是项目源码,Supporting Files里面是一个预编译文件,Frameworks中是系统使用的框架,Products是项目的可执行文件。而右边是项目的配置信息,后面我们将详细讲述。

  1. 下面我们来重点分析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 是函数的返回值。

  1. 点击工具栏的运行按钮,或者按Command+r键运行程序,输出结果如下所示。
  1. 上述步骤演示了如何使用Xcode创建一个简单的"Hello World"应用程序的过程。

1.2 使用命令行编辑、编译并运行Hello World

为了进一步深入了解Objective C程序的编译、运行过程,这里我们使用文本编辑器vi和命令行编译器gcc来编辑、编译并运行一个简单的Objective C程序。实现步骤如下所示。

  1. 配置命令行工具套件,在Xcode的菜单中选择"Preferences",在弹出的对话框中选择"Components",选择Command Line Tools进行下载安装。
  2. 打开终端(Terminal)程序,使用vi编辑程序源码。

  3. 打开vi后输入i切换为插入模式,并输入如下代码。

  4. 选择"esc"键退出插入模式到命令模式,输入:wq 保存退出vi。

  5. 使用下面命令来编译上述文件。

  1. 运行程序如下所示。

1.3 Objective C中的注释

Objective C中的注释本质上和c语言中的注释是相同的,分为行注释和块注释。行注释以// 打头,块注释是/* 块注释内容*/。例如:

// 这是行注释

/*内容比较多时使用块注释*/

程序中的注释会被编译器忽略。

1.4 使用NSLog输出变量

NSLog是一个常用的输出函数,该函数的参数是可变参数,可以格式化输出一个或多个参数,函数定义如下所示,void NSLog(NSString *format,…);。下面程序定义了int类型、float类型和NSString类型的三个变量并且使用NSLog将其输出。程序代码如下:

#import \&lt;Foundation/Foundation.h\&gt;

int main(int argc, const char \* argv[])

{

    @autoreleasepool {

        // 定义int类型变量

        int i = 100;

        // 定义float类型变量

        float pi = 3.14;

        // 定义字符串类型变量

        NSString \*s = @&quot;iOS应用开发详解&quot;;

        NSLog(@&quot;i=%d&quot;,i);

        NSLog(@&quot;pi=%f&quot;,pi);

        NSLog(@&quot;s=%@&quot;,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 \&lt;Foundation/Foundation.h\&gt;

int main(int argc, const char \* argv[])

{

    @autoreleasepool {

        // 输出一个字符串

        NSLog(@&quot;This is a NString&quot;);

        // 输出一个对象

        NSObject \*obj = [[NSObject alloc]init];

        NSLog(@&quot;obj=%@&quot;,obj);

        // 输出一个整型变量

        int i = 100;

        NSLog(@&quot;i=%d&quot;,i);

        // 输出一个长整形变量

        long l = 123456;

        NSLog(@&quot;l=%ld&quot;,l);

        // 输出一个无符号长整型变量

        unsigned long ul = 98765;

        NSLog(@&quot;ul=%lu&quot;,ul);

        // 输出NSInteger

        NSInteger ld = 98765;

        NSLog(@&quot;ld=%ld&quot;,ld);

        // 输出NSUInteger

        NSUInteger ul2 = 98765;

        NSLog(@&quot;ul2=%lu&quot;,ul2);

        // 输出8进制整型

        int o = 123;

        NSLog(@&quot;o=%o&quot;,o);

        // 输出16进制整型

        int i16 = 1234;

        NSLog(@&quot;i16=%x&quot;,i16);

        // 输出一个浮点型

        float f = 3.14;

        NSLog(@&quot;f=%f&quot;,f);

        // 以科学计数法输出

        float f2 = 314.2345;

        NSLog(@&quot;f2=%E&quot;,f2);

        // 输出单个字符

        char c = &#39;A&#39;;

        NSLog(@&quot;c=%c&quot;,c);

        // 输出c字符串

        char \*str = &quot;Hello World&quot;;

        NSLog(@&quot;str=%s&quot;,str);

    }

    return 0;

}

程序输入结果如下所示: