OC语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码。可以使用OC开发mac osx平台和iOS平台的应用程序。拓展名:c语言.c OC语言.m 兼容C++.mm。
为了与c语言的关键字区分开来,基本上所有的关键字都是以@开头。基本类型:5种,增加了布尔类型,BOOL类型与其他类型的用法一致,BOOL类型的本质是char类型的,定义如下:
Typedef signed char BOOL
宏定义:
#define YES (BOOL)1
#define NO (BOOL)0
布尔类型的输出一般当做整数来用。
在OC中Nil相当于是null,也就是0(具体可以参考之前写的《您所不知道的nil/Nil/NULL/NSNull的空与空》)。程序编译连接过程为:源文件(.m)---(编译)---->目标文件(.0)-----(链接)---->可执行文件(.out)。
每个对象内部都默认有一个isa指针指向这个对象所使用的类。isa是对象中的隐藏指针,指向创建这个对象的类。OC做为一门面向对象语言,具有面向对象的语言特性,如封装、继承、多态。也具有静态语言的特性(如C++),又有动态语言的效率(动态绑定、动态加载等)。
Apple公司领导着Objective-C语言的发展与维护,包括Objective-C运行时,Cocoa/Cocoa-Touch框架以及Objective-C语言的编译器。看上去Objective-C就如同以下一个云状图:
这个问题很大,可谈的东西很多,当面试者问这样的问题时,其实他不单单是想知道这个语言的一些知识点,除此之外是想了解您对OC的理解深度,更深的一层是想与面试者产生共鸣。基本上一个问题下来,面试者的水分就能挤出不少。这是不是一个好的问题,我不知道,但这确实是一个会被问到的问题。