首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Swift 與 Objective-C 語法對照表:從 OC 遷移到 Swift 核心差異速查

     編輯:關於C語言

Swift vs Objective-C:語法、特性、範式全方位對照

Swift 作為蘋果現代主力語言,在語法簡潔性、類型安全、函數式特性上全面超越 Objective-C。本文為 OC 開發者提供核心語法對照速查,助力遷移與混編。

一、變量/常量聲明與類型推斷

二、字符串處理

場景Objective-CSwift
常量const int MAX = 100;let max = 100 (類型推斷)
變量double price = 23.55;var price = 23.55
顯式類型必須聲明var name: String = "Swift"
分號必須可選(推薦省略)

三、集合類型:Array / Dictionary

操作Objective-CSwift
定義NSString *s = @"text";var s = "text" (值類型,可變性由 var/let 決定)
拼接[NSString stringWithFormat:@"%@%@", a, b]a + b 或 "\\(a)\\(b)"
比較[a isEqualToString:b]a == b (值比較)
格式化[NSString stringWithFormat:...]"\\(value)" 字符串插值

四、類、結構體、枚舉

操作Objective-CSwift
數組字面量@[@"a", @"b"] (不可變)["a", "b"] (var 可變,let 不可變)
類型可混合任意對象嚴格同類型 [String]
添加元素[mutArr addObject:@"c"]arr.append("c") 或 arr += ["c"]
範圍替換無直接語法arr[1...3] = ["x", "y", "z"]
字典字面量@{@"k": @"v"}["k": "v"]
遍歷for (id key in dict) { ... }for (k, v) in dict { ... } (元組解包)

五、方法定義與調用

// OC
- (int)add:(int)a to:(int)b { return a + b; }
[self add:1 to:2];

// Swift
func add(_ a: Int, to b: Int) -> Int { return a + b }
add(1, to: 2)  // 參數標籤保留 OC 風格可讀性
  • Swift 方法屬於類型,調用用點語法 obj.method()。
  • 返回類型用 -> Type 指示。

六、控制流

特性Objective-CSwift
文件結構.h + .m 兩文件單 .swift 文件
繼承/協議@interface A : B class A: B, P1, P2 { }
屬性初始化init 方法中聲明時必須初始化或標記 ? (可選型)
結構體無 (僅 C struct)值類型,支持方法、協議、擴展,核心數據結構
枚舉C 風格整數關聯值、原始值、方法、遵守協議,一等公民

七、元組:多返回值利器

let product = (id: "AP234", name: "iPhone", price: 599)
product.id  // 命名訪問
product.0   // 索引訪問

func getProduct() -> (String, Int, Double) { ... } // 多返回值
let (id, qty, price) = getProduct()  // 解包

八、可選型:空安全核心

構造Swift 特色
for-infor i in 0..<5 { } (半開區間) / 0...5 (閉區間)
C風格forfor var i=0; i<5; i++ { } (Swift 3 移除,推薦 for-in)
if條件無需括號 if x > 0 { }
switch支持字符串、區間、元組、類型匹配;默認不貫穿,需 fallthrough 顯式貫穿

核心價值:將「空指針異常」從運行時推遲到編譯期,強制開發者處理 nil 情況。

九、內存管理:ARC 共通點與差異

  • 兩者均使用自動引用計數 (ARC),編譯期插入 retain/release。
  • Swift 結構體/枚舉為值類型(棧分配,複製語義),無引用計數開銷。
  • 循環引用解決:OC 用 __weak/weak,Swift 用 weak/unowned。

十、互操作:@objc、桥接、混編

  • Swift 調用 OC:導入 #import "Project-Swift.h" (OC 端) / Project-Bridging-Header.h (Swift 端)。
  • OC 調用 Swift:類需繼承 NSObject 並標記 @objc 或 @objcMembers。
  • 類型橋接:String ↔ NSString、Array ↔ NSArray、Dictionary ↔ NSDictionary 免費轉換。

Swift 以「安全、快速、表達力強」重新定義了蘋果平台開發。掌握上述核心差異,配合 Xcode 遷移工具與漸進式混編策略,可平滑實現代碼庫現代化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
概念語法說明
聲明var s: String?默認 nil,非可選型不可為 nil
強制解包s!確定非 nil 時使用,否則崩潰
可選綁定if let v = s { }安全解包,賦值給新常量
可選鏈obj?.prop?.method()鏈式調用,任一環為 nil 則短路返回 nil
空合運算符s ?? "default"nil 時提供默認值