Swift 與 Objective-C 的變數差異

物件部分

Objective-C

@property (weak, nonatomic) IBOutlet UIButton *addBtn;
@property (weak, nonatomic) IBOutlet UILabel *dataLabel;
@property (weak, nonatomic) IBOutlet UITableView *shipTableView;

在 Objective-C 中,我們使用 `@property` 宣告變數,並指定其屬性,例如 `weak` 和 `nonatomic`。

Swift

@IBOutlet weak var addBtn: UIButton!
@IBOutlet weak var dataLabel: UILabel!
@IBOutlet weak var shipTableView: UITableView!

在 Swift 中,變數的宣告使用 `@IBOutlet`,並以 `weak` 作為參考修飾符。這使得 Swift 的語法更為簡潔,且不易出現記憶體洩漏的問題。

變數與常數的使用 (var/let)

在 Swift 中,使用 varlet 來宣告變數與常數。var 用於可變的變數,而 let 則用於不會改變的常數。

這與 Objective-C 中的 `NSMutableArray` 和 `NSArray` 相似:`NSMutableArray` 是可變的,相當於 Swift 的 var,而 `NSArray` 是固定的,相當於 let

強制解包與可選值 (! 和 ?)

var testStr: String?
testStr = "測試"
print(testStr!)

在 Swift 中,! 符號代表強制解包,當變數未賦值時,使用 ! 會導致程式崩潰。為了避免這種情況,我們可以使用 ?? 進行預設值設定,如下所示:

let safeStr = testStr ?? "預設值"

? 符號則表示可選值,這表示變數可以是 nil,不會導致程式崩潰。


以下是示意圖,展示 Swift 與 Objective-C 的變數宣告方式。

Swift 與 Objective-C 變數差異示意圖

結論

在 Swift 的開發中,理解變數與常數的差異以及如何正確使用可選值是非常重要的。這不僅能幫助開發者撰寫更安全的程式碼,也能提升應用程式的穩定性。

Q&A(常見問題解答)

Q1: Swift 中什麼是可選值?

A1: 可選值是 Swift 中的一種資料型別,用於表示變數可以是某個值或是 nil,這樣可以有效地避免崩潰。

Q2: 如何在 Swift 中處理 nil 值?

A2: 可以使用 if let 來安全地解包可選值,或者使用 ?? 來設定預設值。

Q3: 為什麼要使用 let 來宣告常數?

A3: 使用 let 宣告常數可以提高程式的可讀性和安全性,確保在程式執行過程中變數不會意外被修改。

Categorized in: