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

Swift 與 Objective-C 語法全方位對比:從變數宣告到協議導向編程

     編輯:C 語言入門

1. 常數與變數:型別推斷與安全性

特性Objective-CSwift
關鍵字const / 無let (常數) / var (變數)
型別宣告強制可選,支援型別推斷
範例const int c=10; NSString *s=@"str";let c=10; var s="str" 或 var s: String = "str"

Swift 強制初始化,未初始化屬性編譯報錯,除非標記為可選型(?)。

2. 分號與字串處理

  • Swift 行尾分號可省略(單行多語句需保留)。
  • 字串統一為 String 型別,無 NSString/NSMutableString 之分;以 + 串接,== 比較內容。

3. 陣列與字典:型別安全與現代語法

// 陣列
var recipes = ["Egg", "Mushroom"]  // 型別推斷為 [String]
recipes += ["Thai"]                // 陣列合併
recipes[1...3] = ["A", "B", "C"]   // 範圍替換

// 字典
var companies = ["AAPL": "Apple", "GOOG": "Google"]
companies["TWTR"] = "Twitter"      // 新增/修改
for (code, name) in companies { ... }  // 元組解構遍歷

Swift 陣列/字典為值型別(結構體),賦值即複製,保證執行緒安全。

4. 類別:單檔案定義與協議導向

  • Swift 類別單一 .swift 檔,無 .h/.m 分離。
  • 屬性必須初始化或標記可選(var name: String?)。
  • 繼承與協議採用統一語法:class Sub: Base, Proto1, Proto2。

5. 方法:統一呼叫語法與參數標籤

func greet(name: String) -> Int { print("Hi \(name)"); return 10 }
let obj = MyClass()
obj.greet(name: "Simon")  // 呼叫語法統一為 dot + 括號

返回型別用 -> 指示,支援多重返回值(元組)。

6. 控制流:C 風格與強化 Switch

  • for i in 0..<5 半開區間,0...5 閉區間。
  • if 條件無需括號,switch 預設不貫穿,需 fallthrough 才進入下一 case。
  • switch 支援字串、區間、元組、型別匹配等強大模式。

7. 元組:輕量級多值返回

let product = (id: "AP234", name: "iPhone", price: 599)
product.name  // 具名存取
func getProduct() -> (String, Int, Double) { ... }  // 多值返回

8. 可選型:編譯期空值安全

  • var s: String? 表示可能為 nil,非可選型不可賦 nil。
  • 強制解包!:確信非空時使用,否則執行期崩潰。
  • 可選綁定if let x = opt { ... }:安全解包並進入區塊。
  • 可選鏈obj?.prop?.method():鏈式呼叫任一環為 nil 則整鏈回傳 nil。

可選型將 Objective-C 常見的執行期 nil 崩潰前移至編譯期,大幅提升程式碼健壯性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved