Objective-C是一种通用、高级、面向对象的编程语言。他扩展了标准的ANSI C编程语言,将Smalltalk的消息机制加入到ANSI C中。他是苹果的OS X和ios操作系统及其相关API、Cocoa和CoCoa Touch的主要编程语言。
Page-9
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSLog(@"Hello, Objective-C");
return (0);
} //main
点击左上角的Run按钮或者按下Command+R,就会生成并运行程序。只要没有任何语法错误,Xcode就会编译并链接你的程序,然后再运行它。
选择View>Debug Area>Activate Console的菜单选项或者按下Command+Shift+C快捷键,就会打开Xcode控制窗口,其中会显示程序的输出结果。
现在你已经完成你的第一个Objective-C程序。恭喜!接下来我们要剖析它的工作方式。
Page 10
2.2 解构Hello Object-C程序
我们在这里重新列出main.m文件的内容:
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[])
{
NSLog (@"Hello, Objective-C!");
return (0);
} //main
Xcode通过.m扩展名来表示文件使用的是Object-C代码,应由Objective-C编译器处理。而C编译器处理.C文件,C++编译器处理.cpp文件。在Xcode中,所有这些编译工作默认由LLVM处理,这个编译器能够理解C语言的全部3个变体。
注:LLVM(Low Leave Vertual Machine,底层虚拟机),LLVM是架构编译器的架构系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放并兼容已有脚本。
如果你了解普通的C语言,那么你应该很熟悉main文件中包含的这两行代码: main()的声明语句和结尾的return(0)语句。请记住Objective-C本质上就是C语言,它用来声明main()和返回数值的语法与C语言是一样的。代码中余下几行看起来和普通的C语言有一些细微的差别,比如说这个陌生的#import是什么?想知道答案的话,请继续阅读吧!
补充:在Objective-C中,NSLog相当于C语言中的printf,常用于文字输出。
说明 Objective-C刚诞生的时候,扩展名.m代表message,它指的是Objective-C的一个主要特性,后面的章节将会介绍。现在我们称之为“.m文件”。
2.2.1 #import语句
与C语言一样,Objective-C使用头文件来包含结构体、符号常量和函数原型等元素的声明。在C语言中我们用#include语句来通知编译器查询头文件中相应的定义代码。在Objective-C中我们也可以使用#include来达到同样的目的,不过你可能永远都不会那么做,而是像下面这样使用#import语句:
#import <Foundation/Foundation.h>
#import是由Xcode使用的编译器提供的,Xcode在你编译Object-C、C和C++程序时都会使用它。#import可保证头文件只被包含一次,无论此命令在该文件中出现了多少次。
说明 在C语言中,程序员通常使用基于#ifdef命令的方案来避免一个文件包含另一个文件而后者又包含前者的情况。
而在Object-C中,程序员使用#import命令来实现这个功能。
这里的#import <Foundation/Foundation.h>语句告诉编译器查找Foundation框架中的Foundation.h头文件。
2.2.2 框架
什么是框架?很高兴你问了这个问题。框架是一种把头文件、库、图片、声音等内容聚集在一个独立单元中的集合体。苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集来提供。Cocoa的组成部分有Foundation和Application Kit (AppKit)框架。
Foundation框架处理的是用户界面之下的那些层(Layer)的特性,比如数据结构和通信机制。本书中所有程序均以Foundation框架为基础。
每个框架都是一个重要的技术集合,通常包含数十个甚至上百个头文件。每个框架都有一个主头文件,它包含了框架内所有的头文件。通过在主头文件中使用#import,就可以访问框架内的所有功能。
事实上,Cocoa给其所有函数、常量和类名称都添加了NS前缀。这个前缀告诉我们函数来自Cocoa而不是其他的工具包。
NSString:@是本体
让我们来看看这行NSLog()语句:NSLog(@"Hello, Objective-C!"); @符号是Objective-C在标准C语言基础上添加的特性之一。@符号意味着引号内的字符串应作为