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