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]。
- ↑ Apple Inc. "Programming with Objective-C", Introduction
- ↑ 2.0 2.1 Cox, Brad J. (1986). Object-Oriented Programming, An Evolutionary Approach. Addison-Wesley. ISBN 978-0201103939.
- ↑ Apple Inc. "About Objective-C" (archived)
- ↑ Wikipedia: Objective-C – History
- ↑ Cox, Brad. "The Objective-C Language: An Introduction" (1983).
- ↑ Wikipedia: Objective-C – Early development
- ↑ Wikipedia: Objective-C – NeXT and Apple
- ↑ GCC online documentation – Objective-C
- ↑ Wikipedia: Objective-C – NeXT and Apple
- ↑ Clang project website
- ↑ 11.0 11.1 引用错误:
<ref>标签无效;未给name(名称)为apple_intro的ref(参考)提供文本 - ↑ 12.0 12.1 12.2 Apple Developer: Objective-C Runtime
- ↑ Apple Developer: NSObject
- ↑ 14.0 14.1 TIOBE Index (historical data, 2013)
- ↑ Apple Developer: Swift and Objective-C Interoperability
- ↑ TIOBE Index (current trends)