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

原创 2015年07月06日 18:26:59

------- 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{//这里放的无论出没出错都会执行
}






版权声明:本文为博主原创文章,未经博主允许不得转载。

OC与C的语言联系

在之前的博文中讲过,OC是C语言的超集。那么,通过联系OC和C之间的语言特性,可以让我们更好的理解OC的语言设计特点,同时也加强了我们对语言共性的迁移能力。共性一:实例变量存储在结构中通过比较OC中类...
  • u011273849
  • u011273849
  • 2015年04月02日 10:32
  • 394

自己理解的C和OC的本质区别

C和OC的区别 OC使用消息结构(messaging structure),C使用函数调用(function calling) 消息结构:运行时所执行的代码由运行环境决定(动态绑定)函数调...
  • u010438187
  • u010438187
  • 2015年04月19日 21:22
  • 656

黑马程序员-C语言与OC的差异

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- IOS开发中常用的有OC和swift,其中OC是可以兼容C语言的,所以通过比较C与OC的差异,...
  • a376143220
  • a376143220
  • 2015年10月22日 23:53
  • 159

黑马程序员---OC基础---OC简介、OC与C的差异、类和对象与方法

黑马程序员---OC基础---OC简介、OC与C的差异、类和对象与方法
  • tj462989817
  • tj462989817
  • 2015年08月06日 15:47
  • 244

C与C++与OC的混编

C与OC首先创建一个点.m文件// main.m #import #import "fileC.h" int main(int argc, const char * argv[]) { fu...
  • amy260231120
  • amy260231120
  • 2016年09月22日 14:19
  • 1074

黑马程序员——OC视频学习过程6

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  视频16: 1、为什么要引入import import引入的头文件,...
  • woxingwosu77
  • woxingwosu77
  • 2015年08月20日 15:00
  • 254

详解swift和OC以及C语言的混编(不看后悔!)

Swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,或者有一些第三方使用OC写的,没有swi...
  • zlj_jeck
  • zlj_jeck
  • 2016年05月26日 08:13
  • 15453

OC基础-零基础学习Objective-C:第一部分.类和对象

本人也是Objective-C的小白,以下只是记录我学习过程的历程,如有不对的地方或者疑问欢迎指正。 原发表在新浪微博上,现转移到这里 必备工具: 1.一本书,建议《Objective-C基础教程...
  • l522402543
  • l522402543
  • 2015年08月28日 21:45
  • 995

iOS开发之OC最常见面试题总结

1.简述OC中内存管理机制 OC的内存管理机制是自动引用技术,内存管理的原则是谁开辟谁释放,分为ARC和MRC,MRC的话就是需要我们程序员手动管理内存,ARC不需要我们手动管理内存,系统会自行管理...
  • Star__shine
  • Star__shine
  • 2016年04月20日 20:12
  • 7540

OC 语言的特性和OC/C/C++ 比较

Objective -C:          行内人简称其为OC。它的发展主要是因为1988年Steve Jobs的NextStep采用Objective-C作为开发语言,因此MacOS X以及IOS...
  • Eightgetoohandsome
  • Eightgetoohandsome
  • 2015年11月23日 22:35
  • 578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员---OC基础---OC与C的差异
举报原因:
原因补充:

(最多只允许输入30个字)