Skip to main content

我的第二個語言 swift

· 4 min read

原本我以為我下一個會努力學習的語言會是 Python 或 Rust,但因為公司的需求,我只好來學一下 Swift。 第一次來玩「強型別」語言,以前常常聽人家在說,寫強型別的語言一開始會有很多不適應的地方,原本還想說會嗎?我也寫過 TypeScript 啊,應該沒有這麼誇張吧,結果…

還真的不太適應,哭了~

下面是在學習語言的幾個步驟,也列出來分享給大家:

Step 1 基本語法

Swift 裡面有許多 JavaScript、TypeScript 不常見的東西,像是 struct、tuple 等等,這段還好有主管強力支援來開路,不然自己看應該會比較辛苦一點。

這部分的筆記都寫在 Swift Guide 這邊

Step 2 Leetcode & 熟悉 Xcode

在初步了解語言的基本寫法之後,開始進入到一點點實戰階段,透過下面的這個網站來練習所學。

很像 LeetCode 的練習

透過過程中更擴大學習 Swift 的一些語言特性,像是使用一些 function 的時候要特別 import 一些東西。

以前寫網站都是用 VSCode 或 Cursor,換了一個 IDE 其實真的不習慣,快捷鍵也不同,Xcode 也相對沒有這麼 AI,所以一開始寫的時候真的很痛苦啊,真的是到後來才有辦法在這兩個 IDE 中順利地切換。

這邊有整理了目前常用到的 Xcode 快捷鍵 Xcode shortcut-key

Step 3 SwiftUi

我想這個語言主要就是為了開發 iOS 系統而生的,那這個 SwiftUI 也是近幾年才出現的一個東西,過去在用的是 UIKit。

Step 4 上網找資料 & 買書

我也特別去找了 Udemy Swift & SwiftUI 的課程(便宜),還是去天龍書局買了 Swift & SwiftUI 的書來安自己的心,當成是參考書來查看和翻閱。 覺得很多課程和書上重複看到的東西,也強化自己的印象,也感受到什麼東西是這個語言中重要的東西,加速自己的學習速度。

Step 5 trace project

剛開始在 trace 的時候真的好不喜歡 delegate 的寫法,超難 trace,簡直要崩潰,這個真的需要多看幾次。 但也因為這個是一個 Apple Watch 的 project,所以 code 還沒有到太 over,所以經過一些時間的努力,還算是可以 follow 得上。

Step 6 實作

開始實際 coding 的時候,還是有很多不順的地方,Xcode build 不過啊,怎麼 debug 啊,怎麼下 break 點…等等很多問題,但是這些都還可以慢慢地讓時間和努力去抓到感覺。

UI

UI 的這部分也是超不習慣的啦,前端切版習慣的我,變成要了解很多 SwiftUI 的寫法,也是要花不少時間去了解和體會。

資料傳遞

前端最重要的資料傳遞,也是一個不習慣啦,不過還好我有過去 Angular RxJS 的功力,所以這個部分還算是好過關,但是 delegate 的 callback 方式,還是很想要吐。

package

install package 方面,也是後來才發現是在 Xcode 上面直接找,直接 install,然後在做的時候,深深地感受到,website 的資料真的是比 Swift 的多上不少。

心得

以前在寫 Vue 的時候,得知要換一個 Angular 框架時,也是千百個不願意,當初原本以為我會用 Vue 一輩子,但這世界上怎麼可能會有這麼好的事情。但是在學習過後其實覺得蠻不錯的,因為透過 Angular 學到了 RxJS 的觀念,有了 Observable 和 subscribe 的想法,和強化 TypeScript 的觀念,對之後寫 Vue3 也是幫助不小。

所以這次也是帶著這樣的精神和想法,跳出寫網站的舒適圈,重新再來一次學習程式語言的辛苦,我想多來幾次,未來在學其他語言的時候,應該會更順利,畢竟未來還有 Python 和 Rust 想要玩。

初次玩強型別確實有一點點不太適應,在 Cursor 寫的 code 在 Xcode 就是 compile 不過,但是 Swift 也是更接近底層的語言,不像是 JavaScript 是 GC 語言。

GC 語言就是在執行的過程,語言會自行釋放記憶體,避免 memory leak 的問題,也不太會有程式 crash 的問題。

像 Swift 的 memory 也是要自己小心,在非同步的處理上面,也比 JavaScript 晚了一點點。

最後感謝強大的 iOS 工程師前輩 zonble,火速地教會了這麼多東西。