跳至內容

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]。

參考文獻

[編輯 | 編輯原始碼]