黑马程序员---objective-c基础学习--第一个oc程序及代码分析

来源:互联网 发布:新南威尔士宿舍 知乎 编辑:程序博客网 时间:2024/04/23 17:29

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 黑马程序员---objective-c基础学习--第一个oc程序及代码分析

1、最简单的Objective-C程序

我们都知道经典的C语言程序“Hello World”,这个程序可以输出“Hello World”或一些简短词语。现在学习Objective-C,因为它是C语言的扩展,所以我们也从“Hello Objective-C”开始。我使用Xcode4.3.3版本创建了第一个Hello Objective-C工程,代码如下:

//  main.m//  Hello objective-c////  Created by zou on 5/6/15.//  Copyright (c) 2015 __MyCompanyName__. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    {          // insert code here...        NSLog(@"Hello, Objective-C!");        }    return 0;}

编译链接之后程序打印结果为:

2015-05-08 20:58:11.118 Hello objective-c[543:403] Hello, Objective-C!

我们发现这个程序和C语言,有些相似的地方,也有些不同,为什么能打印出这个结果呢?我们一起来剖析一下每行代码。

2、 解构Hello Objective-C程序

再次列出Hello Objective-C.m的内容:

<span style="font-size:14px;"> #import <Foundation/Foundation.h> int main(int argc, const char * argv[]){   {        // insert code here...       NSLog(@"Hello, Objective-C!"); }    return 0;}</span>

Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理。C编译器处理以.c结尾的文件,而C++编译器处理.cpp文件。在Xcode中所有编译工作全由GCC来来处理,这个编译器能理解C语言的全部三个变体。
因为Objective-C本质上就是C语言,.m文件中得main()和return 0,是用来声明主函数和返回值的语法,和C语言是一样的。
和C语言一样,Objective-C使用头文件来包含元素声明,C语言中使用#include语句通知编译器应在头文件中查询定义,在Objective-C中也可使用#include,但通常都是使用#import:

<span style="white-space:pre"></span>#import <Foundation/Foundation.h>

#import是由GCC编译器提供的,使用这句可以保证头文件只被包含一次,而不论此命令实际在文件中出现了多少次。
#import <Foundation/Foundation.h>语句告诉编译器查看Foundation框架中得Foundation.h头文件。
那什么是框架呢?框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供。Cocoa的组成部件由Foundation和Application 
Kit(也称为AppKit)框架。还有一个支持框架的套件,包含Core Animation和Core Image,这为Cocoa增添了许多精彩功能。
Foundation框架处理的是用户界面之下的层(layer)中得特性,例如数据结构和通信机制。每个框架都是一个重要的技术集合,通常包含数十个甚至上百个头文件。每个框架都有一个主头文件,它包含了所有框架的各个头文件,通过使用#import来导入主头文件,可以使用所有框架的特性。Foundation框架的头文件非常大,我们使用#import <Foundation/Foundation.h>就能够获得所有集合。

3、NSLog()和@"字符串"

使用#import导入了Foundation框架的主头文件后,就可以开始利用Cocoa特性编写代码了。Hello Objective-C中得第一行实际代码使用了NSLog()函数,
如下所示:

<span style="font-size:14px;"><span style="white-space:pre"></span>NSLog(@"Hello, Objective-C!");</span>

    此代码可向控制台输出“Hello Objective-C!”这和C语言中得printf()函数很相似。和printf()一样NSLog()接受一个字符串作为其第一个参数,该字符串可包含格式说明符如%d。我们可以用printf()代替NSLog(),但还是建议使用后者,因为它添加了特性,例如时间戳、日期戳和自动附加换行符“\n”等。
这里的“NS”是什么意思呢?其实,Cocoa对其所有函数、常量和类型名都添加了“NS”前缀,这个前缀告诉我们函数来自Cocoa而不是其他工具包。再看看代码中得@符号代表什么呢?@符号是Objective-C在标准C语言上添加的特性之一,双引号的字符串前有一个@表示引用的字符串应该作为Cocoa的NSString元素来处理。
那什么是NSString呢?去掉“NS”前缀,我们看到了熟悉的“String”,表示字符串,NSString就是Cocoa中得一串字符。NSString有许多打包的特性,Cocoa中需要使用字符串时可以使用它,下面是一些NSString的功能:
1、告知其长度;
2、将自身与其他字符串比较;
3、将自身转换为整型值或浮点型值;

4、总结

从第一个Objective-C的学习过程中,对Objective-C是C语言的扩展这句话有了进一步的了解,Objective-C保留了一些C语言的特征,同时也扩展了一些独有的特性。这次学习为下一步更深入的学习Objective-C打下了基础。
最后留下一句我喜欢的一句话:Actions speak louder than words.





0 0
原创粉丝点击