------- android培训、java培训、iOS培训、.Net培训、期待与您交流! ----------
差异性(一)
1、源文件对比
C语言中常见的文件:.c源文件 .o目标文件 .out可执行文件 .h头文件
OC中常见的文件有两种:
.m源文件:类的实现文件,参与编译的文件,用来实现类中声明的方法)
.h头文件:包含方法、属性的声明
2、基本语法对比
1)数据类型对比
对比多出来的部分:
BOOL:字面常量值是YES或者NO
NSObject *:OC中的对象类型
id:动态对象类型,万能指针
SEL:选择器数据类型
block:代码块数据类型
2)变量的定义对比
注意:(1)C语言的关键字都可以在OC源程序中使用
(2)OC新增的关键字在使用时,注意部分关键字以"@"开头
3)流程控制语句对比
C语言中:(1)if else (2)switch (3)while (4)do while (5)for
OC中新增:增强型for循环,可以快速遍历数组、字典等集合
NSArray *arr=@[@"one",@"two",@"three"];
for(NSString *str in arr){
NSLog(@"%@",str);
}
4)函数(方法)定义和声明对比
C语言中函数的声明和实现
(1)函数声明:
int sum(int a,int b);
(2)函数定义:
int sum(int a,int b){
return a+b;
}
OC语言中函数习惯称之为“方法”
(1)方法声明:
-(int)sum:(int) a and:(int) b;
(2)方法定义:
-(int)sum:(int) a and:(int )b{
return a+b;
}
差异性(二)
1、OC新增的数据类型介绍
逻辑类:
(1)Boolean
Boolean 类型指的是用于存储真值和假值的变量,一般用于程序流程控制 。
Boolean 类型数据允许取值 true 或 false ,也可以是0或非0的整数替代 true 和 false
Boolean flag = true;
if(flag){
NSLog(@"真 %d",flag);
}else{
NSLog(@"假 %d",flag);
}
(2)BOOL
存放逻辑值的另一种方法,取值为YES或者NO
BOOL flag2 = YES;
if(flag2){
NSLog(@"真 %d",flag);
}else{
NSLog(@"假 %d",flag);
}
2、OC中的新增异常捕捉方法
@try...@catch...@finally
格式:
@try {
//如果有异常
1/0
< #statements#>
......
}
@catch (NSException *exception) {
//捕捉最具体的异常类型
< #handler#>
}
@catch (NSException *ne) {
//捕获一个比较重要的异常类型。
}
@catch (id ue) { //再次掷出捕获的异常。
}
@finally { //不管有没有异常finally内的代码都会执行。
< #statements#>
NSLog(@"@",exception);//增加这句可以打印错误原因
}
这是OC中的异常捕捉机制,代码有可能抛出的异常是封闭在一个@ try块。 @catch()块包含为@ try块抛出的异常处理逻辑。一个@ finally块包含代码必须执行是否引发异常与否。可以通过使用@throw指令抛出一个异常,这基本上是一个对Objective – C对象的指针。然后使用NSException对象的指针打印出相关的错误原因。