第一个Objective-C程序:
我很高兴在接触了Android之后,又侥幸的对IOS产生了兴趣,也许自己对移动领域结下了不解之缘。我们知道对于刚开始学习一门新的语言的时候,第一个需要掌握的程序就是Hello World!,所以这里我们继续遵循着这个足迹,下面就开始IOS的神秘之旅。
构建项目:
我们知道,苹果公司提供了一个强大的开发工具Xcode,它可以快速帮助我们开发基于OS X和IOS系统的应用程序软件,所以最好使用这款软件来开发程序。对于Xcode的使用和项目的详细创建过程在这里不做总结,这里主要是进行程序的原理和开发相关的总结(下面相关的总结都是这种形式)。
首先,我们创建一个基于Foundation框架的程序Hello Objective-C!对于Foundation框架,我会在下面进行介绍。我们创建一个命令行工具(Command Line Tool)项目并进行相关的配置即可。
编写代码:
我们知道对于Hello Objective-C!程序而言,它是最简单的Objective-C程序了,程序里面就只有一个用来输出”Hello Objective-C!”字符的NSLog(@“”)函数以及一个用来标识程序顺利执行结束的返回值return。具体代码如下:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
// this is the first Objective-C program
NSLog(@"Hello Objective-C!");
return 0;
}// main
分析程序:
我们知道,Objective-C本质上就是C语言的拓展语言。它也同样需要导入程序需要的包含结构体、符号常量及函数原型等的头文件。与在C中类似,在Objective-C中使用了#import语句来导入头文件,当然也可以使用关键字#include来导入,但在这里估计是永远都不会这样去做的。使用#import的好处就是可以保证头文件只被包含一次,不论这个命令在文件中被调用了多少次。另外,在C当中,经常会使用ifdef来处理一个文件包含另一个文件,同时另一个文件也包前者的情况,而在这里使用#import就可以很好的解决这个问题。
就如我们看到的,这里使用了Foundation框架集,那儿在这里也顺便说下,实际上Foundation框架只是Cocoa框架集的一员。Cocoa框架集中包含了Foundation Kit和Application Kit(AppKit)框架。另外还有一套支持型的框架,包含了Core Animation和Core Image,他们为Cocoa框架增添了许多新的特性和功能。
在这里的Foundation框架集中处理的是用户界面下的那些层次的特点,例如:数据机构和通信机制。对于Foundation的头文件位于目录:/System/Library/Frameworks/Foundation.framework/Headers下面,当然这些文件我们不可以修改,否则会容易破坏掉框架集的相关功能。
在上面的代码,我们有看到程序在输出我们期待的Hello Objective-C!这个字符串时使用了NSLog()这个函数,它的参数是字符串类型,同时也可以给这个输出自定义格式,类似于C中的printf(),这些格式比较多,会在以后的学习中进行总结。另外,在NSLog(@“”)中的字符串的原型是类型NSString,它才是Objective-C!字符串的本体。当然了,最后一行的return语句,与C中的是一样的,是用来标识程序的结束。
最后要说的就是在很多编程语言中都频繁使用的布尔类型的变量了。通用的表示关键字就是Bool了,在C/C++及Java当中,这个值为true和false两个值。在Objective-C中的这个值也是两个值,但表示的形式有些不同,即为YES和NO。
好了,对于第一个简单的Objective-C程序Hello Objective-C就分析到这里了,不要关掉,看下面的总结吧!
知识总结:
1、在Objective-C中强烈建议使用关键字#import而不是#include来导入头文件。因为这种导入头文件的方式可以保证头文件只被导入一次,不论在文件中使用多少次这个导入语句。
2、Foundation框架集是Cocoa框架集中的一员,主要是用来实现数据的结构和通信机制的。
3、在Objective-C中经常用来调试的日志打印函数NSLog()的使用,它类似于C中的printf()可以输入指定格式的字符串格式日志。
4、最后讨论下了Objective-C中的布尔类型与其他编程语言中的差异点,是用YES和NO来进行判断逻辑的。
好了,伟大的程序运行成功了!接下来会有更有趣的东西等着喽!
/**
* 技术交流群:179914858
*/