关闭

黑马程序员---OC基础---OC与C的差异

标签: 黑马程序员
248人阅读 评论(0) 收藏 举报
分类:

------- android培训java培训IOS培训期待与您交流! ----------

1、源文件的对比

C语言中:我们能够遇到的文件后缀有:

.c:C语言的源文件。

.o:C语言编译后的目标文件。

.out:可执行文件。

.h:头文件。

OC语言中:我们能遇到的文件后缀有:(常见的是.m和.h)

.h:头文件。

.c:C语言的源文件。

.cpp/.cc:C++语言的源文件。

.m:OC语言的源文件。

.mm:OC++语言的源文件。

2、基本语法对比:

(1)对比数据类型:由于OC语言是向下兼容C语言的,所以可以使用C语言的所有数据类型,OC特有的数据类型有

①布尔型(BOOL)。②Block类型。③指针类型分为类和id类型。④特殊类型(SEL、nil)。

BOOL与Boolean类型举例说明:

</pre><pre name="code" class="objc">#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]){
      @autoreleasepool{
            //1、Boolean类型的使用
            Boolean flag = true;
            flag = false;
            //true真、false假
            printf("flag = %d\n",flag);
            if(flag){
            printf("XXXXXXXXXXX\n"); 
            }
            //2、BOOL类型的使用
            BOOL flag1 = YES;//取值为YES和NO
            flag1 = NO;
            printf("flag1 = %d\n",flag1);
            if(flag1){
            printf("XXXXXXXXXXX\n"); 
            }
      }
}
</pre></p><p><span style="font-size:14px;">(2)变量定义的差异(关键字):C语言的关键字都可以在OC源程序中使用,OC语言新增的关键字有一部分是以@开头这里不再一一赘述。</span></p><p><span style="font-size:14px;">(3)流程控制语句对比:OC语言中可以使用C语言中的流程控制语句;</span></p><p><span style="font-size:14px;">新增的几种语句有:增强型for循环、可以快速遍历数组、字典等集合。</span></p><p><span style="font-size:14px;"></span><pre name="code" class="objc">NSArray *arr=@[@"one",@"two",@"three"];
for(NSString *str in arr){
      NSLog(@"%@",str);
}
(4)函数的定义和声明的区别:

C语言中,函数的定义如下:

int max(int x,int y);
int max(int x,int y){
	return x>y?x:y;
}

OC语言中,函数被称为方法:

+(void) test;//类方法
-(void) test1;//对象方法

-(int)max:(int)x and:(int *) y;//方法的声明
-(int)max:(int)x and:(int *) y{//方法的实现
      return a+b;
}
3、OC语言中新增的异常捕捉方法:

Object-C语言的异常处理符号和C++、JAVA相似。再加上使用NSException,NSError或者自定义的类,我们可以在应用程序里添加强大的错误处理机制。
异常处理机制是由这个四个关键字支持的:@try,@catch,@thorw,@finally。当代码有可能出现异常时,我们把他放到@try语句块中。@catch()块包含了处理@try块里的抛出的异常的逻辑。无论异常是否发生,@finally块里面的语句都会执行。如果直接使用@throw块来抛出异常,这个异常本质上是一个OC的对象。咱们可以使用NSException对象,但是不局限于他们。
下面是一个典型的异常处理块的例子:

@try{
int b = t/0;//这里放的是有可能出错误的代码。
}
@catch (NSException *exception){//这里放出错后处理的代码
}
@finally{//这里放的无论出没出错都会执行
}






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2656次
    • 积分:159
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档