面向对象的编程语言objective - c是什么?

  

什么是objective - C

objective - C,简称OC,是一种通用,高级,面向对象的编程语言。它扩展了标准的ANSI C编程语言,

将Smalltalk式的消息传递机制加入到ANSI C中。当前主要支持的编译器有GCC和叮当声(采用LLVM作为后端)。

objective - C的商标权属于苹果公司,苹果公司也是这个编程语言的主要开发者。

苹果在开发NeXTSTEP操作系统时使用了objective - C,之后被OS X和iOS继承下来。

现在objective - C与斯威夫特是OS X和iOS操作系统,及与其相关的API,可可和可可触摸的主要编程语言。

objective - C是C语言的严格超集。这意味着任何C语言程序不经修改就可以直接通过objective - C编译器,

在objective - C中使用C语言代码也是完全合法的.Objective-C被描述为盖在C语言上的薄薄一层,

因为objective - C的原意就是在C语言主体上加入面向对象的特性.OC项目中常用的拓展名如下:

扩展名内容类型

。h,头文件。头文件包含类,类型,函数和常数的声明。

。米,源代码文件。这是典型的源代码文件扩展名,可以包含objective - C和C代码。

。mm源代码文件。带有这种扩展名的源代码文件,除了可以包含objective - C和C代码以外还可以包含c++代码。仅在你的objective - C代码中确实需要使用c++类或者特性的时候才用这种扩展名。

你好,世界!

学习任何一门语言之前,基本都需要做的就是编写并运行一个HelloWorld程序,对于OC而言则是如下:

# import & lt;基?Foundation.h>

int主要(int命令行参数个数,const char * argv [])

{

 <代码> @autoreleasepool {
  
  ,,NSLog (@"你好,世界!“);
  
  }
  
  返回0; 

}

使用铿锵声进行编译:

叮当声你好框架的基础。m - o你好

运行:

美元。/你好

2019-04-05 09:33:22.579你好[75742:3312942]你好,世界!

So easy!我们学习Objective-C时记住要重点关注概念而不是具体的语言细节,避免陷入学而无用的境地。

关键概念

消息传递

Objective-C最大的特色是承自Smalltalk的消息传递模型(message passing),

此机制与今日C++式之主流风格差异甚大。 Objective-C里,与其说对象互相调用方法,

不如说对象之间互相传递消息更为精确。此二种风格的主要差异在于调用方法/消息传递这个动作。

C++里类别与方法的关系严格清楚,一个方法必定属于一个类别,而且在编译时(compile time)

就已经紧密绑定,不可能调用一个不存在类别里的方法。但在Objective-C,类别与消息的关系比较松散,

调用方法视为对对象发送消息,所有方法都被视为对消息的回应。所有消息处理直到运行时(runtime)

才会动态决定,并交由类别自行决定如何处理收到的消息。也就是说,一个类别不保证一定会回应收到的消息,

如果类别收到了一个无法处理的消息,程序只会抛出异常,不会出错或崩溃。

C++里,送一个消息给对象(或者说调用一个方法)的语法如下:

obj.method(argument);

Objective-C则写成:

[obj method: argument];

此二种风格各有优劣。C++强制要求所有的方法都必须有对应的动作,且编译期绑定使得函数调用非常快速。

缺点是仅能借由virtual关键字提供有限的动态绑定能力。Objective-C天生即具备鸭子类型之动态绑定能力,

因为运行期才处理消息,允许发送未知消息给对象。可以送消息给整个对象集合而不需要一一检查每个对象的类型,

也具备消息转送机制。同时空对象nil接受消息后默认为不做事,所以送消息给nil也不用担心程序崩溃。

字符串

作为C语言的超集,Objective-C 支持 C 语言字符串方面的约定。也就是说,单个字符被单引号包括,

字符串被双引号包括。然而,大多数Objective-C通常不使用C语言风格的字符串。

反之,大多数框架把字符串传递给NSString对象。NSString类提供了字符串的类包装,

包含了所有你期望的优点,包括对保存任意长度字符串的内建内存管理机制,支持Unicode,printf风格的格式化工具,

等等。因为这种字符串使用的非常频繁,Objective-C提供了一个助记符@可以方便地从常量值创建NSString对象。

如下面的例子所示:

//从一个C语言字符串创建Objective-C字符串

NSString*  fromCString=[NSString stringWithCString:"A C string"

encoding:NSASCIIStringEncoding];

//使用助记符@

NSString* name=@"PANN";

面向对象的编程语言objective - c是什么?