iOS应用开发最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 Objective-C的HeIIo WorId程序

如同学习任何新的编程语言和工具一样,我们通过开发HelloWorld程序来获得对这种语言使用的初步印象。在下面的例子里,我们将开发一个简单的控制台应用程序,程序将在控制台窗口输出欢迎信息。

为此,首先启动Xcode开发环境,在弹出的窗口中选择创建新项目,接着在弹出的选择窗口中,在左侧选择Mac OS X下面的“Application”,然后在右侧的项目模板选择窗口中选择“Command Line Tool”项目模板,Xcode将为我们创建一个基于控制台的应用程序。单击“Next”按钮,注意如果Xcode的版本不同,图2-1显示的内容可能会略有不同,本书中的所有代码均通过Xcode 4.5.2来创建。

图2-1 选择“Command Line Tool”项目模板

在接下来的窗口中,在“Product Name”文本框中输入项目的名称 Hello World Console。在“Company identifier”文本框中因为我们之前创建 iPhone 应用时输入过iPhone.book,这里Xcode会智能地显示之前的iPhone.book,其他的选项都保持默认值,如图2-2所示。

图2-2 输入项目详细信息

单击“Next”按钮选择项目存储路径后创建项目。项目创建完成后单击“Hello World Console”虚拟目录下的main.m文件会显示如图2-3所示的窗口,左侧是项目导航栏窗口,右侧编辑区域显示main.m源代码文件。在Objective-C里,代码文件以.m为后缀名。

图2-3 main.m文件

这和我们前面看到的iOS应用项目的main文件的内容非常相似,如果觉得不好理解,可以去掉@autoreleasepool 标记。@autoreleasepool 标记说明了内存的管理方式,这对于iPhone应用开发来说并不重要,可以忽略。修改后代码如下:

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

不用做任何其他改动了,在创建程序时Xcode已经自动地添加了上面代码段中第4行显示的NSLog方法,在控制台输出日志信息:

        4:    NSLog (@"Hello, World!");

NSLog方法负责在控制台窗口输出格式化的信息,单击窗口左上角的Run按钮或者按下+R组合键执行程序,如图2-4所示。

图2-4 如何运行程序

启动运行后,马上可以观察到Xcode项目窗口下方的控制台输出窗口中显示了如图2-5所示的结果。

图2-5 查看执行结果

图2-5显示的是调试窗口区域,可以通过单击工具栏区域的按钮来显示或隐藏调试窗口区域,如图2-6所示。

图2-6 如何显示或隐藏调试窗口区域

回过头来重新阅读这段代码。有过C、Java或者C#等语言开发经验的开发者对这段代码不会陌生。代码的第 1 行是对头文件的引用,在这里是 Foundation 库的引用。注意Objective-C中使用import而不是include关键字作为导入命令的关键字。

        1: #import <Foundation/Foundation.h>

接下来有一个main函数和其他语言一样作为执行的入口:

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

NSLog 方法如同 C 语言里面的 printf,Java 里面的 System.println,或者 C#里面的Console.Writeln,用来在控制台窗口输出信息。前面提到 C 语言的代码完全可以在Objective-C的环境下编译和执行,有兴趣的开发者可以尝试将NSLog替换成printf,也会得到同样的输出结果,但 NSLog 会输出一些日期及精确到毫秒的时间戳信息,方便开发者调试。

NSLog接受NSString类型变量作为参数,因此需要在提供的字符串前面加上“@”符号来告诉编译器这是一个NSString,否则编译器会认为是C语言的字符串从而给出编译警告。最后一行返回0,表明main函数正常退出。

        4:    NSLog (@"Hello, World!");

更多信息:在导航栏窗口看到.1和.pch文件不要奇怪,它们的用处如下。

➢ Hello_World.1:参照www.fileinfo.com/extension/man,是UNIX系统下的man帮助文件,但man文件很少以.man结尾,而是以1到8结尾。

➢ Hello World-Prefix.pch文件:预编译文件,其中引用了一些头文件并将其存在缓存里面,这样编译时可以自动地从缓存中读出从而加快编译的速度。

Objective-C完全支持面向过程的编程,可以在代码中定义函数,并在main函数或者其他的函数中调用,不过针对iOS进行编程使用更多的是面向对象的编程(OOP,Object Oriented Programming),我们在 iPhone 应用开发中大多数时候需要学习和了解的是Objective-C语言面向对象编程的部分。