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