Why SwiftUI ?
15年開始接觸Android開發(fā)缚去,20年因?yàn)樾枰_始接觸微信小程序云開發(fā)。最近易结,通過學(xué)習(xí)SwiftUI稠通,終于入門iOS了买猖!
其實(shí)早在16年初的時候滋尉,伴隨著Swift開源的熱潮玉控,我已經(jīng)跟著官方文檔在學(xué)Swift狮惜。但因?yàn)镺C的累贅(當(dāng)時Swift還未能完全勝任iOS開發(fā))以及對iOS拖動式UI開發(fā)的不習(xí)慣,and 當(dāng)時自己剛畢業(yè)技術(shù)池還較淺虱而,理解不了很多概念,因此未能入門iOS開發(fā)牡拇。
隨著蘋果推出SwiftUI穆律,以及Playgrounds官方案例的完善惠呼,我體驗(yàn)到了作為一名移動端開發(fā)者終于可以比較輕松地使用Swift來進(jìn)行iOS的整個開發(fā)峦耘。并且一套代碼就能適配蘋果全家桶 ( iOS, watchOS, macOS, visionOS ) 真的很誘惑!
學(xué)習(xí)路徑
對于和我一樣的iOS初學(xué)者辅髓,我建議先學(xué)習(xí)Swift的語法:
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour
跟著官方文檔學(xué)會了語法之后泣崩,可以跟著Playgrounds做幾個官方案例洛口。
接下來可以使用Xcode來進(jìn)行真實(shí)場景的開發(fā)了。官方案例 Landmark 一定不能錯過:
https://developer.apple.com/tutorials/swiftui
跟著官方案例 Landmark 開發(fā)技即,你會感受到這真的很接近真實(shí)場景樟遣,再加一些網(wǎng)絡(luò)功能就算得上是一個完整App了。而這豹悬,完全使用SwiftUI開發(fā)。
對于開發(fā)過程中遺忘的基礎(chǔ)語法瞻佛,我習(xí)慣使用菜鳥教程來查閱:
https://www.runoob.com/swift/swift-arrays.html
對于一些不了解的UI控件娇钱,可以查閱官方文檔:
https://developer.apple.com/documentation/swiftui/asyncimage
實(shí)戰(zhàn)指南
跟著教程學(xué)習(xí)很順利绊困,有坑也能比較快速解決,這是因?yàn)閱栴}空間較小秤朗,所以解空間也小。但實(shí)戰(zhàn)則不同取视,實(shí)戰(zhàn)是基于未知的需求來解題,問題空間大稽物,解空間也就變得很大。因此贝或,對于初學(xué)者锐秦,實(shí)戰(zhàn)比較好的做法跟著范本來解題傀缩。
這里有一些系列iOS開源App:
https://github.com/dkhamsing/open-source-ios-apps
根據(jù)我剛從中參考的經(jīng)驗(yàn)农猬,建議選取帶 SwiftUI 標(biāo)簽的和更新時間在 1 年內(nèi)的。因?yàn)镾wiftUI及Xcode開發(fā)方式在這幾年變化還是非常大的慷垮。
多下載一些項(xiàng)目閱讀與參考,有些項(xiàng)目雖然很nb料身,但是代碼結(jié)構(gòu)和開發(fā)方式其實(shí)并不適合初學(xué)者(看不懂)衩茸,因此建議先看自己用得上的能看懂的芹血。
實(shí)際開發(fā)碰到各種奇怪的坑很正常楞慈,畢竟代碼是由一個個單詞構(gòu)成的,作為一種嚴(yán)謹(jǐn)?shù)恼Z言囊蓝,Swift 不像 JS 那樣擁有較高的寬容度,多一詞少一詞就報(bào)錯很正常狡恬≈槭澹可以借助 ChatGPT 等工具快速定位錯誤。
SwiftUI 學(xué)習(xí)筆記
接下來的該系列文章祷安,我會使用 SwiftUI 開發(fā)一個貓咪社區(qū)App兔乞,并全程分享開發(fā)中使用的技術(shù)辆憔、遇到的坑與收獲的技巧报嵌。
我使用的開發(fā)工具是Xcode熊榛,版本會跟隨系統(tǒng)保持最新(當(dāng)前是15.4)。貓咪社區(qū)的原型基于我獨(dú)立開發(fā)的小程序“貓與貓尋”玄坦,但會根據(jù)iOS的特性與一些好玩的前沿技術(shù)做些自由改動。項(xiàng)目的源碼會分享在GitHub上煎楣,歡迎大家交流與指導(dǎo),一起學(xué)習(xí) SwiftUI 喻喳,成為 iOS 開發(fā)大佬~