2014年,Apple公司推出了Swift語言,用于替代ObjectiveC語言開發(fā)面向Apple平臺的應(yīng)用軟件。Swift語言有以下眾多優(yōu)點。
(1) Swift語言是一種強類型檢查的語言,不屬于同一類型的任意兩個類型都不能互相賦值,例如無符號8位整型不能賦給有符號16位整型; 而且Swift語言可控制各種數(shù)據(jù)類型的越界存儲。
(2) Swift語言是一種安全的語言,它對內(nèi)存訪問有嚴(yán)格的訪問控制。
(3) Swift語言是一種非常接近自然語言的程序設(shè)計語言,程序代碼的可讀性強。
(4) Swift語言程序的執(zhí)行效率高,而且Swift語言是一種開源的語言。
(5) Swift語言的SwiftUI框架技術(shù)使得用戶界面設(shè)計簡便高效。
(6) Swift語言的開發(fā)環(huán)境Xcode功能強大且易用,可以借助于命令行工程或Playground快速學(xué)習(xí)Swift語言。
現(xiàn)在Swift語言是Apple平臺,如iPhone、iPad、Mac和Watch等的首選程序設(shè)計語言,Swift語言既適合編寫科學(xué)計算程序,又適合圖形界面設(shè)計。截至2023年6月,Swift語言的版本為5.8,Swift語言程序設(shè)計的開發(fā)環(huán)境Xcode的版本為15.0。本書基于這兩個版本介紹Swift語言程序設(shè)計技術(shù)。
本書基于江西財經(jīng)大學(xué)軟件與物聯(lián)網(wǎng)工程學(xué)院iOS程序設(shè)計課程的講義擴編而來,全書共9章,各章的主要內(nèi)容如下。
第1章為Swift開發(fā)基礎(chǔ),介紹Hello World工程框架、控制臺工程設(shè)計方法、格式化輸出方法等,并詳細(xì)討論了Swift語言中常量(常量的值稱為字面量)、變量、整數(shù)類型和可選類型等,是學(xué)習(xí)Swift語言的入門知識。
第2章為Swift數(shù)據(jù)表示,詳細(xì)闡述了Swift語言的數(shù)據(jù)結(jié)構(gòu)及其表示方法,討論了字符、字符串、浮點型和布爾型等基本類型,以及元組、數(shù)組、集合和字典等集合類型(或稱構(gòu)造類型);谶@些知識,可將現(xiàn)實問題中的數(shù)據(jù)借助Swift語言表示為計算機可識別的數(shù)據(jù)。
第3章為運算符與程序控制,重點介紹了算術(shù)運算符、關(guān)系運算符、條件運算符、位運算符、區(qū)間運算符和賦值運算符等,基于這些運算符的知識,可將數(shù)據(jù)連接為表達(dá)式。本章還深入介紹了程序執(zhí)行方式,即順序執(zhí)行、分支執(zhí)行和循環(huán)執(zhí)行等,詳細(xì)介紹了分支執(zhí)行和循環(huán)執(zhí)行的程序設(shè)計方法。在這個基礎(chǔ)上,可以借助Swift語言實現(xiàn)各種各樣的算法。
第4章為函數(shù)與閉包,闡述了函數(shù)的定義與用法,并重點分析了多參數(shù)函數(shù)、多返回值函數(shù)、復(fù)合函數(shù)和遞歸函數(shù)的設(shè)計方法,同時,還介紹了一種特殊的函數(shù),即無函數(shù)名的閉包函數(shù)的設(shè)計方法。這些知識可以幫助程序員實現(xiàn)模塊化編程,即用函數(shù)組織同一功能的代碼,使得眾多程序員合作編程成為可能。
第5章為枚舉與結(jié)構(gòu)體,介紹了枚舉與結(jié)構(gòu)體兩種構(gòu)造類型,這兩種類型是Swift語言中很重要的類型,特別是結(jié)構(gòu)體類型,非常受Swift語言開發(fā)者的推崇,整個SwiftUI框架(Swift語言的界面設(shè)計框架)全是基于結(jié)構(gòu)體設(shè)計的。本章詳細(xì)地討論了結(jié)構(gòu)體的存儲屬性、計算屬性、初始化器、索引器以及實例方法和靜態(tài)方法等。枚舉和結(jié)構(gòu)體均屬于值類型,使用安全方便。結(jié)構(gòu)體具有面向?qū)ο蟪绦蛟O(shè)計的部分特點,如具有抽象特性、封裝特性、繼承特性(指服從協(xié)議)等。學(xué)習(xí)Swift語言必須熟練掌握結(jié)構(gòu)體。
第6章為類與實例,闡述了類的定義與設(shè)計方法,深入分析了類的屬性和方法,討論了類的繼承和多態(tài)。本章內(nèi)容是面向?qū)ο蠹夹g(shù)的重要體現(xiàn),Swift語言將類定義的變量或常量稱為實例(instance),而不使用對象(object)這種傳統(tǒng)說法。類是一種引用類型,在使用類時需要避免出現(xiàn)強引用而導(dǎo)致內(nèi)存碎片。Swift語言中,類是單繼承的,每個類只能有一個父類(或稱基類)。Swift語言設(shè)計者建議可以使用結(jié)構(gòu)體實現(xiàn)的功能,盡可能使用結(jié)構(gòu)體,而不使用類。但是,Swift語言中,類仍然是一種強大的數(shù)據(jù)類型。
第7章為擴展與協(xié)議,重點討論了擴展的設(shè)計方法和協(xié)議的定義方法。擴展解決了類型定義的不足,結(jié)構(gòu)體和類等可以借助擴展,添加屬性(指計算屬性)和方法(不能覆蓋原實體中的方法),甚至可以擴展系統(tǒng)類型。協(xié)議解決了多繼承問題,一個類或結(jié)構(gòu)體可以繼承(或稱服從)多個協(xié)議。本章還討論了類型嵌套、類型判定、可選類型鏈和并行處理機制等。整個Swift語言是基于協(xié)議的,可以稱其為面向協(xié)議的語言。
第8章為泛型與模糊類型,介紹了泛型的定義和用法,重點介紹了函數(shù)泛型和自定義類型泛型,繼而討論了模糊類型的概念和用法。此外,本章還介紹了自動引用計數(shù)(一種內(nèi)存管理方法)、內(nèi)存安全、訪問控制和高級運算符等內(nèi)容。
第9章為用戶界面設(shè)計,講解了界面設(shè)計的框架程序技術(shù),討論了帶有用戶界面的App的設(shè)計方法,闡述了繪圖程序設(shè)計方法。本章內(nèi)容使用了SwiftUI框架技術(shù),該技術(shù)是Swift語言開發(fā)人員推薦的用戶界面設(shè)計方法,可設(shè)計精美且功能強大的用戶界面。
本書由江西財經(jīng)大學(xué)軟件與物聯(lián)網(wǎng)工程學(xué)院iOS程序設(shè)計教學(xué)團(tuán)隊編寫,其中,張勇編寫第1、9章,羅凡編寫第2、6章,李瑞友編寫第3章,吳文華編寫第4章,陳偉編寫第5章,石宇雯編寫第7、8章。全書由張勇統(tǒng)稿。全體編著者在寫作過程中,感覺到Swift語言已經(jīng)發(fā)展為十分成熟的計算機語言,已經(jīng)具有了其他眾多優(yōu)秀計算機語言,如C/C /C#、Java、Python、Delphi和BASIC等的特色,可作為一種高級計算機語言用于教學(xué)與科研。
Swift語言和其開發(fā)環(huán)境Xcode都在不斷發(fā)展中,本書中的全部工程實例適用于Swift語言5.8以上版本和Xcode 15.0以上版本,本書的硬件平臺為MacBook Pro M1,操作系統(tǒng)為macOS Ventura 13.4。設(shè)計好的App可以發(fā)布到Apple Store中,在全球范圍內(nèi)分享,這需要注冊Apple開發(fā)者賬號,借助Xcode生成發(fā)布版本。
配 套 資 源
程序代碼等資源: 掃描目錄上方的配套資源二維碼下載。
課件、大綱等資源: 掃描封底的書圈二維碼在公眾號下載,或者到清華大學(xué)出版社官方網(wǎng)站本書頁面下載。
微課視頻(386分鐘,131集): 掃描書中相應(yīng)章節(jié)中的二維碼在線學(xué)習(xí)。
注: 請先掃描封底刮刮卡中的文泉云盤防盜碼進(jìn)行綁定后再獲取配套資源。
限于編著者的水平和經(jīng)驗,書中難免有疏漏之處,請同行專家、教師和讀者朋友不吝賜教。
張勇2024年1月于江西財經(jīng)大學(xué)麥廬園
第1章Swift開發(fā)基礎(chǔ)
(視頻講解: 18分鐘,6集)
1.1Hello World工程
1.2控制臺輸入與輸出
1.3輸出格式化字符串
1.4Swift語言基礎(chǔ)
1.4.1變量與常量
1.4.2整數(shù)類型
1.4.3可選類型量
1.5本章小結(jié)
習(xí)題
第2章Swift數(shù)據(jù)表示(視頻講解: 34分鐘,13集)
2.1字符
2.2字符串
2.3浮點型
2.4布爾型
2.5元組
2.6數(shù)組
2.7集合
2.8字典
2.9本章小結(jié)
習(xí)題
第3章運算符與程序控制(視頻講解: 33分鐘,12集)
3.1算術(shù)運算符
3.2關(guān)系運算符和條件運算符
3.3邏輯運算符
3.4位運算符與區(qū)間運算符
3.5賦值和復(fù)合賦值運算符
3.6程序執(zhí)行方式
3.6.1順序執(zhí)行方式
3.6.2分支執(zhí)行方式
3.6.3循環(huán)執(zhí)行方式
3.7本章小結(jié)
習(xí)題
第4章函數(shù)與閉包(視頻講解: 63分鐘,19集)
4.1簡單函數(shù)實例
4.2多參數(shù)函數(shù)
4.3多返回值函數(shù)
4.4復(fù)合函數(shù)
4.5遞歸函數(shù)
4.6閉包
4.6.1常規(guī)閉包用法
4.6.2特殊閉包用法
4.7本章小結(jié)
習(xí)題
第5章枚舉與結(jié)構(gòu)體(視頻講解: 51分鐘,15集)
5.1枚舉
5.1.1枚舉量原始值
5.1.2枚舉量關(guān)聯(lián)值
5.1.3遍歷枚舉量
5.1.4遞歸枚舉
5.1.5枚舉初始化器
5.2結(jié)構(gòu)體
5.2.1結(jié)構(gòu)體用法
5.2.2存儲屬性與計算屬性
5.2.3結(jié)構(gòu)體初始化器
5.2.4實例方法與靜態(tài)方法
5.2.5結(jié)構(gòu)體索引器
5.3本章小結(jié)
習(xí)題
第6章類與實例(視頻講解: 61分鐘,23集)
6.1類的概念
6.2屬性
6.2.1類屬性
6.2.2存儲屬性
6.2.3計算屬性
6.2.4屬性檢查器
6.2.5屬性包裹器
6.3方法
6.3.1類方法
6.3.2實例方法
6.4初始化器
6.4.1普通初始化器
6.4.2指定型初始化器和借用型初始化器
6.4.3容錯型初始化器
6.4.4閉包型初始化器
6.4.5子類初始化器
6.5析構(gòu)器
6.6索引器
6.6.1基本用法
6.6.2靜態(tài)索引器
6.6.3繼承索引器
6.7繼承
6.7.1繼承實例
6.7.2方法覆蓋
6.7.3屬性覆蓋
6.8多態(tài)
6.9本章小結(jié)
習(xí)題
第7章擴展與協(xié)議(視頻講解: 68分鐘,23集)
7.1擴展
7.1.1計算屬性擴展
7.1.2初始化器擴展
7.1.3方法擴展
7.1.4索引器擴展
7.1.5嵌套類型擴展
7.2協(xié)議
7.2.1屬性協(xié)議
7.2.2方法協(xié)議
7.2.3初始化器協(xié)議
7.2.4委派機制
7.2.5協(xié)議擴展
7.2.6協(xié)議繼承
7.2.7協(xié)議組合
7.2.8可選協(xié)議
7.3類型嵌套
7.4類型判定
7.5可選類型鏈
7.6并行處理機制
7.7異常處理方法
7.7.1觸發(fā)異常函數(shù)
7.7.2異常處理函數(shù)
7.7.3推遲執(zhí)行語句
7.8本章小結(jié)
習(xí)題
第8章泛型與模糊類型(視頻講解: 30分鐘,12集)
8.1泛型
8.1.1函數(shù)泛型
8.1.2自定義類型泛型
8.1.3類型約束
8.1.4關(guān)聯(lián)類型
8.1.5條件泛型
8.2模糊類型
8.3自動引用計數(shù)
8.3.1強引用
8.3.2弱引用
8.3.3非占用引用
8.3.4閉包引用
8.4內(nèi)存安全
8.5訪問控制
8.6高級運算符
8.6.1位運算符與溢出運算符
8.6.2結(jié)合性與優(yōu)先級
8.6.3運算符重載
8.7本章小結(jié)
習(xí)題
第9章用戶界面設(shè)計(視頻講解: 28分鐘,8集)
9.1框架程序
9.1.1MyCh0901工程框架
9.1.2SwiftUI界面元素
9.2簡單App設(shè)計
9.3繪圖程序設(shè)計
9.4本章小結(jié)
習(xí)題
附錄AWindows 11系統(tǒng)上安裝macOS系統(tǒng)虛擬機
參考文獻(xiàn)