您的位置:首页 > 移动开发 > Objective-C

黑马程序员——Objective-C语言知识整理——Objective-C语言基础知识总结

2015-06-25 15:56 459 查看
------- android培训java培训、期待与您交流! ----------

1、Objective C语言简介

       Objective-C语言是在C语言基础上,进行部分语法扩展,满足面向对象编程要求的新的编程语言。支持C语言的基本语法,同时在此基础上定义了新的语法、语义规则。

2、Objective-C基础知识

OC程序代码举例



代码结构说明:

第1部分处的#import<>为头文件引入语句

第2部分的NSLog()函数,其功能类似于printf函数,将字符串打印输出到控制台。

(1) #import与#include的使用异同(面试题)

相同点:两中用法都可以引入头文件。

不同点:使用#import可以防止头文件的重复引入;而使用#include时,需要通过预取指令,判断是否已经包含某一头文件,用来防止重复,没有预取指令则无法防止重复引入。



(2) import与@class的区别(面试题)

1) @class一般写在类的声明文件中,即.h头文件中;import则写在类的实现文件中,即.m源文件中。

2) import在循环依赖关系中会出现循环包含死循环,造成编译出错问题,在传递依赖关系中(如A->B,B->C),每次修改都会重新编译全部头文件,耗时太长。为了避免以上两种情况使用@class。

3) @class用来通知编译器预先定义的类,是一个标识符。

(3) Foundation/Foundation.h头文件介绍(面试题)

头文件位置:



头文件作用:将编写代码时需要添加的所有系统头文件统一引入,方便程序的编写。

(4) '@'符号功能

1) @+"字符串内容",功能是将字符串转换为Objective-C中的NSString类型。

2) @+标识符,表明标识符为关键字,Objective-C中关键字以@开头,如:@try、@end等等。
(5) Objective-C中的注释

Objective-C有三种注释:单行注释、多行注释(这两种与C原因相同)与文档注释("/**"与"*/")。

文档注释示例:

/**

*@brief 求和函数

*参数a,b为int型

*返回值:a+b为int型

*/

- (int)sum:(int) a and:(int) b;

{

return a+b;

}

3、Objective-C与C语言的比较

3.1 Objective-C语言NSLog函数与C语言printf函数的比较

相同点:两个函数均可以将字符串在控制台显示输出。

不同点:相比较printf函数,1)NSLog函数可以输出日志信息,如运行时间等项目信息。

                                            2)NSLog函数输出内容可以自动换行。

                                            3)NSLog函数传递的参数是NSString类的对象,printf使用字符串地址。

                                            4)NSLog函数输出字符串时,格式控制符为%@,printf函数使用%s。

3.2 源文件对比

C语言文件类型

.h文件——头文件,用于进行类的声明、头文件的引入等。

.c文件——源文件,程序代码实现。

.o文件——目标文件,编译结束后生成的文件,用于链接成可执行文件。

.out文件——可执行文件。

Objective-C语言文件类型

.h文件——头文件,与C语言相同。

.m文件——Objective-C源文件,类的实现文件,参与编译。

扩展:C++源文件为.cpp文件。

3.3 基本语法对比

(1) 数据类型的对比

C语言数据类型



Objective-C语言数据类型



(2) 关键字的对比

C语言关键字

总计32个关键字,如:数据类型关键字char、int等;流程控制关键字return、while等。

Objective-C语言关键字

1) C语言中的关键字均可以在Objective-C语言中使用。

2) Objective-C中新增的关键字,需要加'@',如@try、@end、@interface等等,关键字self/super除外。

(3) 流程控制语句的差异

C语言中的流程控制语句

1) if else语句

2) switch语句

3) while语句

4) for语句

5) do while语句

Objective-C中的流程控制语句

1) C语言中的基本流程控制语句,在Objective-C中都兼容。

2) Objective-C提供了一种增强型的for循环。

for循环使用举例:

输出结果为:one two three

代码功能分析:该for循环可以遍历字符串数组的每个字符串,调用NSLog函数可以在控制台显示输出。

(4) 函数定义与声明的差异

C语言函数定义与声明

1) Main函数前定义,函数不需要再调用时进行函数声明。

2) Main函数后定义,函数调用时,需要提前进行函数声明。

代码举例:

<span style="font-size:14px;">// 函数声明.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/**
*sub函数实现减法功能
*参数:a,b为操作数
*返回值:a-b
*/
int sub(int a,int b){
return a-b;
}

int main(int argc, char* argv[])
{
int a=3,b=2;//定义并初始化操作数a,b
int result;//result存放操作结果

result=sub(a,b);//做减法操作
printf("a-b=%d\n",result);//打印输出结果

int sum(int a,int b);
result=sum(a,b);//做加法操作
printf("a+b=%d\n",result);//打印输出结果
return 0;
}

/**
*sum函数实现减法功能
*参数:a,b为操作数
*返回值:a+b
*/

int sum(int a,int b){
return a+b;
}</span>


运行结果为:



代码说明:调用函数sum时,需要提前进行函数声明。

Objective-C语言函数的定义与声明:

函数定义格式为:

①方法类型表示符 ②(返回值类型) ③函数名: ④(参数类型) 参数名⑤And: ⑥(参数类型) 参数名 ……

其中①部分取值为‘+’和‘-’,‘+’表示类方法;‘-’表示对象方法。

代码举例:+ (void) Test;//无参数函数定义或声明

                    - (int) sum: (int) a and:(int) b;

类方法与对象方法的声明与实现,分布需要放在@interface与@end、@implementation与@end之间。

3.4 Objective-C新增数据类型

布尔类型取值为true和false,可以用于条件控制语句的判断,当变量为true时,以整型格式输出值为1,使用代码以及测试结果举例为:



3.5 异常捕捉

        为了提高程序的健壮性,需要用到异常处理语句,异常捕捉的作用将程序运行过程中的异常(如地址越界)捕捉到,进而运行异常处理语句,保证程序的正常退出。

代码实例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息