Objective-C
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]。
| 中文名 | 擴充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 的起源可追溯至 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>標籤,未定義名稱為apple_intro的參考文獻內容文字。 - ↑ 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)