開始學習 iOS 開發後,一定會遇到一種語言:充滿中括號的陌生語法,以及像 NSString 這樣讓人摸不著頭緒的前綴。
這就是 Objective-C。
第一次在舊有程式碼中遇到這種語言時,很容易納悶:「這到底是哪裡來的語法?」了解它的歷史後,程式碼看起來會完全不同。
先說重點:Objective-C 是在 1980 年代初期,將 Smalltalk 的物件概念加到 C 語言上所打造的語言。
而那個著名的 NS 前綴,來自史蒂夫・賈伯斯創立的 NeXT,其作業系統 NeXTSTEP。
這篇文章會帶你了解以下內容。
- Objective-C 的誕生背景(C + Smalltalk)
- NS 前綴的由來與技術原因
- 隨著 iPhone 到來的全盛時期
- 在 Swift 時代存活下來的原因
Objective-C 是如何誕生的?
1980 年代初期,有兩位名為 Brad Cox 和 Tom Love 的工程師。他們想要的是兩件事。
- C 語言:速度快,但沒有物件導向概念
- Smalltalk:優雅的物件導向語言,但速度太慢
因此他們提出了 Objective-C:在 C 上加上一層非常薄的物件導向層,同時完全不修改 C。
Objective-C 是 C 的嚴格超集合。
世界上所有 C 程式碼,不需修改就能直接成為有效的 Objective-C 程式碼。
用一小段程式碼看看它實際上是什麼樣子。
// 一般的 C 程式碼,同時也是原封不動有效的 Objective-C 程式碼
int sum = 1 + 2;
// Objective-C加上的: Smalltalk形式的訊息傳送(中括號)
NSString *text = [NSString stringWithFormat:@"總和 %d", sum];
上面兩行完全使用 C 語法,下面中括號的那一行就是 Objective-C 新增的全部內容。
它的身體來自 C,靈魂(物件模型與訊息傳送)則來自 Smalltalk。中括號語法 [receiver message] 正是從 Smalltalk 繼承而來的遺產。
可以把它想成和 C++ 幾乎同一時期,使用相同材料(C + 物件導向)做出完全不同的料理。
NS 前綴代表什麼?
1985 年,史蒂夫・賈伯斯被自己創立的 Apple 趕了出去。
接著他創立了 NeXT,而這家公司的作業系統 NeXTSTEP,其官方開發語言正是 Objective-C。
NSString、NSArray 中的 NS,就是 NeXTSTEP 的縮寫。即使是 2026 年最新的 iPhone App 程式碼裡,也像化石般刻著 1980 年代末賈伯斯公司的名稱。
但為什麼非得加上前綴?這有技術上的原因。
- Objective-C 沒有命名空間
- 類別名稱必須在全域唯一,因此相同名稱相遇時就會發生衝突
- 於是形成加上公司或專案縮寫的慣例(Apple 使用 NS,AFNetworking 使用 AF)
Apple 甚至正式說明:「兩個字母的前綴保留給 Apple,第三方請使用三個字母。」這是以文化補上語言缺口的案例。
Swift 引入了模組層級的命名空間,因此不再需要這項慣例。這就是沒有 NS 的 String、Array 成為 Swift 時代象徵的原因。
隨著 iPhone 到來的全盛時期
1996 年,Apple 以 4 億美元收購 NeXT,賈伯斯在 12 年後回歸。
NeXTSTEP 成為 Mac OS X 的骨架,而 Objective-C 也成為 Apple 的官方語言。
接著 App Store 在 2008 年開幕。能夠開發 iPhone App 的語言只有一種:Objective-C。
隨著全球開發者湧入,這個默默無名超過 20 年的語言,轉眼間成為最熱門的語言。
以語言人氣指標 TIOBE index 來看,它在 2012 年與 2014 年兩度獲選「年度語言」,一度升至僅次於 C 和 Java 的第三名。
Objective-C 現在還有人使用嗎?
2014 年 Apple 發表 Swift 後,Objective-C 的時代似乎即將落幕。然而十多年過去,這門語言仍未消失。原因有三個。
- Apple 系統框架:UIKit 與 Foundation 的根基依然是 Objective-C,因此 Swift 程式碼也會透過橋接與它們溝通。
- 舊有程式碼庫:數百萬行的大型 App 不可能一夜之間重寫,因此維護開發者的需求持續存在。
- 執行環境的動態特性:可以在執行期間替換方法,也就是方法調配,因此分析 SDK 仍然依賴這個執行環境。
Q. 現在還需要重新學 Objective-C 嗎?
幾乎不會有人用這門語言開始新專案。不過,如果你是處理老舊程式碼庫的 iOS 開發者,至少能讀懂它會是很大的優勢。
Q. 只懂 Swift 就夠了嗎?
新功能開發只懂 Swift 就足夠了。不過,了解 NS 的由來,以及中括號為何出現,會讓你更容易理解 Apple 的框架。
總結
Objective-C 不是死去的語言,而更像是一位準備退休的老將。它與賈伯斯一同在 Apple 外成長,又隨賈伯斯回歸,成為全球最有價值公司的一顆心臟。
下次在舊程式碼中遇到 NSString,請用親切的眼光看待它。那兩個字母承載了 40 年的歷史。
參考資料

