跳转到内容

Objective-C

轻之舟百科,让知识轻装启航
Objective-C
中文名扩充C的面向对象编程语言
英文名Objective-C
简称ObjC、OC
设计者布莱德·考克斯(Brad Cox)、Tom Love
设计公司Stepstone(原 Productivity Products International)
面市时间1980年代
主要实现产品Clang、GCC
受其影响Smalltalk、C
影响语言Swift、Java(部分特性)
操作系统macOS、iOS、Linux(通过GNUstep)等
网站Apple Developer

Objective-C(常缩写为 ObjC 或 OC)是一种通用、高级、面向对象的编程语言,它在标准 ANSI C 语言之上扩展了 Smalltalk 风格的消息传递机制[1]。该语言是苹果公司 macOS、iOS 及其相关 API(Cocoa 与 Cocoa Touch)的主要开发语言,直至 2014 年 Swift 语言问世。Objective-C 由布莱德·考克斯(Brad Cox)和 Tom Love 于 1980 年代初发明[2],后被 NeXT 公司选为其 NeXTSTEP 操作系统的核心开发语言。目前 Objective-C 的商标权归苹果公司所有,苹果也是该语言的主要维护者[3]。

Objective-C 的起源可追溯至 1980 年左右,当时布莱德·考克斯和 Tom Love 在 ITT 实验室工作,他们受到 Smalltalk 语言的启发,希望将动态消息传递机制引入 C 语言,以提升工程系统的可复用性[4]。考克斯编写了一个 C 语言的预处理器,为 C 增加了面向对象特性,这便是 Objective‑C 的雏形[5]。

1983 年,考克斯与 Love 共同创立了 Productivity Products International(PPI)公司,后更名为 Stepstone,将 Objective‑C 及其类库商业化[6]。1986 年,考克斯出版了《Object‑Oriented Programming, An Evolutionary Approach》一书,系统阐述了该语言的设计哲学[2]。

1988 年,史蒂夫·乔布斯创办的 NeXT 公司从 Stepstone 获得 Objective‑C 授权,并扩展了 GCC 编译器以支持该语言。NeXT 基于 Objective‑C 开发了 AppKit 和 Foundation Kit,作为 NeXTSTEP 操作系统的基础开发框架[7]。尽管 NeXT 硬件并未取得商业成功,但其软件工具在业界影响深远。

1992 年,GNU 项目增加了对 Objective‑C 的支持[8]。1994 年 NeXT 与 Sun 联合发布了 OPENSTEP 标准。1996 年苹果公司收购 NeXT,NeXTSTEP/OPENSTEP 成为 macOS 的基础,其开发环境被命名为 Cocoa[9]。2005 年起,苹果逐步引入 LLVM 和 Clang,以取代 GCC 成为官方编译器[10]。

Objective‑C 是 C 语言的严格超集,任何 C 代码均可在 Objective‑C 编译器中直接通过编译[11]。其面向对象语法源自 Smalltalk 的消息传递范式,而非 C++ 的静态函数调用。非面向对象部分(如类型、流程控制、函数声明)与 C 完全一致。

消息传递

[编辑 | 编辑源代码]

对象方法的调用不是传统的函数调用,而是“消息发送”(Message Sending)。编译器将方法调用转换为 `objc_msgSend` 等运行时函数,由运行时系统动态解析目标方法[12]。这种动态绑定赋予语言极高的灵活性,支持方法交换(Method Swizzling)等高级特性[12]。

接口与实现

[编辑 | 编辑源代码]

类的声明(接口)与实现分离。接口在 `.h` 文件中使用 `@interface` 指令,声明属性和方法;实现在 `.m` 文件中使用 `@implementation` 指令提供具体代码[11]。这种分离方式有利于隐藏实现细节。

运行时系统

[编辑 | 编辑源代码]

Objective‑C 拥有一个强大的运行时(Runtime)系统,负责消息分发、动态类型识别、类与对象的创建及方法解析[12]。运行时 API 是 Cocoa 和 Cocoa Touch 中诸多设计模式(如委托、目标‑动作)的底层支撑。所有类均继承自 `NSObject`,该类定义了与运行时交互的基本接口[13]。

使用情况

[编辑 | 编辑源代码]

Objective‑C 是苹果平台(iOS、macOS、tvOS、watchOS)应用程序开发的主要语言,其普及程度与 iPhone 及 iOS 生态系统的成功密切相关[14]。在 2013 年,Objective‑C 曾位列 TIOBE 编程语言排行榜第三名[14]。

2014 年苹果发布 Swift 语言,并积极推广其作为 Objective‑C 的继任者。然而,Objective‑C 的存量代码库依然庞大,苹果也保持对 Objective‑C 的持续支持,且两种语言可在同一项目中无缝互操作[15]。目前 Objective‑C 仍在苹果生态系统中扮演重要角色,特别是在维护历史项目或使用未更新至 Swift 的第三方框架时[16]。

参考文献

[编辑 | 编辑源代码]