具体描述
編輯推薦
《Swift語言實戰晉級》深入挖掘Swift語言的使用規律。省略過多講述基礎語法的篇幅,從而把重點放在實踐上,通過豆瓣電颱、跑酷熊貓、圍住神經貓多個案例來與大傢一同研究如何用Swift製作有趣的應用和遊戲。
在51CTO學院、SwiftV課堂發布的相關教學視頻可配閤使用。
《Swift語言實戰晉級》中使用的圖片素材、代碼包均在綫共享。
51CTO傳媒總裁熊平、51CTO學院高級運營經理曹亞莉、SwiftV課堂創始人周鑫、泰課在綫創始人杜增強、天地君道培訓創始人黑羽鼎力推薦。
書內附贈51CTO學院100金幣的學習卡、SwiftV課堂90元代金券。
本書附贈的51CTO學院100金幣課程學習卡如遇到無法使用、卡片遺漏等任何問題,請聯係mahan@ptpress.com.cn,我們將盡快為您解決。 內容簡介
《Swift語言實戰晉級》主要通過大量實例來講解Swift語言在軟件開發中的實際應用方法。《Swift語言實戰晉級》共9章,前2章快速講述Swift的基礎內容,即開發環境的搭建和Swift的基礎語法。由於本書是晉級篇,故不再大篇幅講解基礎內容。第3~6章以UIKit控件為主要內容,通過拖拖看小遊戲、豆瓣電颱、任務提醒軟件幾個案例來充分鞏固UIKit從基礎到高級的知識體係,其中還會涉及網絡數據讀取、圖片緩存等技術。第7~9章我們共同聊一聊SpriteKit的應用,以圍住神經貓、跑酷熊貓兩個實例來講述2D遊戲的開發技術。《Swift語言實戰晉級》適閤對Swift語言的基礎內容有一定瞭解的讀者提升實戰技能。 作者簡介
老鎮,本名曾偉,勤勞碼農一名,擅長iOS遊戲與應用開發。擁有十餘年研發經驗,是國內最早一批Swift研究者。51CTO學院、SwiftV課堂熱門講師。Swift係列視頻教程《跑酷熊貓》、《豆瓣電颱》和《Swift動畫編程指南》的原作者。 精彩書評
★《Swift語言實戰晉級》理論與實踐相結閤,嚮讀者展示瞭Swift的語法、UIKit和SpriteKit等的使用方法。它是一座精彩的Swift實踐城堡。本書配有相關教學視頻,同步講解。書內案例中的素材和代碼均在綫共享,讓你真正做到學以緻用。 ——51CTO傳媒總裁 熊平
★Swift因其語法簡單、使用方便、可與OC混閤使用等特性,讓廣大開發者興奮不已。一時之間各種Swift入門視頻、教程興起,相信經過瞭這麼長時間的入門學習,大傢到瞭需要提高實戰技能的時候瞭,《Swift語言實戰晉級》從Swift的語言精要、用Swift控製UIKit控件及Swift實戰(包含基於UIKit的應用實例和基於SpriteKit的遊戲編程)三部分幫助大傢提升Swift語言實戰能力。不管你是Swift語言初學者,還是有一定編程經驗的開發者都可以把它當作案頭工具書。 ——51CTO學院高級運營經理 曹亞莉
★Swift正在改變iOS的開發生態,《Swift語言實戰晉級》並不局限於理論介紹,而是采用瞭“項目驅動”的方式來講授知識點,提供瞭多個項目實例,極具參考價值。《Swift語言實戰晉級》不僅適閤作為初級開發者的入門教程,同時也可作為高級開發者參閱的工具書。 ——SwiftV課堂創始人 周鑫
★《Swift語言實戰晉級》通過多個遊戲和應用來講解Swift的語法、UIKit和SpriteKit等的使用方法,內容由淺入深,以實際案例解析和鞏固知識點,是一本不可多得的好書。同時,《Swift語言實戰晉級》將作為泰課在綫Swift課程官方指定教材使用。 ——泰課在綫聯閤創始人 杜增強
★書品如人品。老鎮與我相識多年,勤敏敦厚。以“項目驅動”為理念,進行各方嚮探索和技術研究,重實際,廣博而得其味。今於新秀Swift有心得而集成冊,相信一定能大有益於學人!作為朋友,至誠推薦! ——天地君道培訓創始人 黑羽 目錄
第1章 Swift開發環境的搭建
1.1 下載Xcode
1.2 關於Mac操作係統
第2章 Swift語法速讀
2.1 基礎知識
2.1.1 變量與常量
2.1.2 注釋
2.1.3 整數
2.1.4 浮點數
2.1.5 類型推測
2.1.6 數值型類型轉換
2.1.7 布爾值
2.1.8 元組
2.1.9 可選類型
2.1.10 斷言
2.2 基本運算符
2.2.1 賦值運算符
2.2.2 數值運算
2.2.3 自增(自減)運算
2.2.4 復閤賦值
2.2.5 比較運算
2.2.6 三元運算符號
2.2.7 區間
2.2.8 邏輯運算
2.2.9 括號優先級
2.3 字符串和字符
2.3.1 字符串
2.3.2 字符
2.4 集閤類型
2.4.1 數組
2.4.2 字典
2.5 流程控製
2.5.1 for循環
2.5.2 while循環
2.5.3 條件語句
2.5.4 控製轉移語句
2.6 函數
2.7 閉包
2.8 枚舉
2.9 類和結構體
2.10 屬性
2.11 方法
2.12 下標
2.13 繼承
2.14 構造過程
2.15 析構過程
2.16 自動引用計數
2.17 可選鏈
2.18 類型轉換
2.19 類型嵌套
2.20 擴展
2.21 協議
2.22 泛型
2.23 訪問控製
2.24 高級運算符
第3章 基礎UIKit控件概覽
3.1 創建工程及基本操作
3.1.1 創建Single View Application工程
3.1.2 基本操作
3.2 Button(按鈕)
3.2.1 Button控件的基本屬性
3.2.2 Button實例:各類按鈕
3.3 Label
3.3.1 Label控件的基本屬性
3.3.2 Label實例:各類文本標簽
3.4 TextField
3.4.1 文本框控件的屬性
3.4.2 實例:登錄界麵
3.4.3 實例:加法計算器
3.5 TextView
3.5.1 多行文本框的屬性
3.5.2 實例:自定義選擇內容後的菜單
3.6 Switch
3.6.1 文本框控件的屬性
3.6.2 Switch控製TextView的可編輯屬性
3.7 SegmentedControl
3.7.1 Segmented Control的屬性
3.7.2 Segmented Control實例
3.8 ImageView
3.8.1 圖像控件的基本屬性
3.8.2 圖像控件實例
3.9 ProgressView
3.9.1 進度條控件的屬性
3.9.2 進度條控件的實例
3.10 ActivityIndicator View
3.10.1 環形進度條的基本屬性
3.10.2 環形進度條實例
3.11 Slider
3.11.1 拖動條的基本屬性
3.11.2 實例:拖動條控製圖片透明度
3.12 AlertView
3.12.1 警告框的基本屬性
3.12.2 實例:各式各樣的警告框
3.13 ActionSheet
3.13.1 底部警告框的基本屬性
3.13.2 底部警告框的實例
3.14 DatePicker
3.14.1 日期選擇器的基本屬性
3.14.2 日期選擇器的實例
3.15 PickerView
3.15.1 選擇器的一些屬性
3.15.2 選擇器的實例
3.16 Stepper
3.16.1 步進器器的一些屬性
3.16.2 實例:屬性加點器
3.17 WebView
3.17.1 網頁視圖控件的一些屬性
3.17.2 實例:迷你網頁瀏覽器
3.18 Toolbar與Bar Button Item
3.18.1 工具條的一些屬性
3.18.2 Bar Button Item的一些屬性
3.18.3 工具條的實例
3.19 TableView
3.19.1 TableView的一些屬性
3.19.2 TableView的一個簡單例子
3.20 SearchBar
3.20.1 搜索條的簡單屬性
3.20.2 搜索條的簡單例子
3.20.3 Search Bar and Search Display Controller例子
3.21 NavigationBar
3.21.1 導航條的實例
3.22 NavigationController
3.22.1 導航控製器的屬性
3.22.2 導航控製器實例
3.23 TabBar
3.23.1 TabBar的一些屬性
3.23.2 TabBarItem的一些屬性
3.23.3 TabBar實例
3.24 TabBar Controller
3.24.1 TabBar Controller實例
3.25 Page View Control
3.25.1 Page View Controller屬性
3.25.2 Page View Controller實例
第4章 拖拖看小遊戲
4.1 構建主界麵
4.2 基本變量和更新函數
4.3 獲取滑塊的數值並與目標值進行比較
4.4 重頭開始玩遊戲
4.5 新增得分規則界麵實現跳轉
4.6 自定義界麵
第5章 豆瓣電颱
5.1 動手之前先做一些準備
5.2 實現界麵
5.3 設置TableView
5.4 異步獲取網絡數據
5.5 緩存縮略圖
5.6 改變封麵圖
5.7 播放歌麯
5.8 選擇歌麯頻道
5.9 Cell的顯示動畫
5.10 播放時間與播放進度
5.11 簡單的手勢控製播放與暫停
5.12 最後的細節
第6章 任務提醒軟件
6.1 軟件預覽
6.2 創建項目
6.3 設計Cell
6.4 動態展示Cell
6.5 簡述MVC
6.6 Model初體驗
6.7 導航控製器
6.8 界麵跳轉
6.9 處理新界麵的一些細節
6.10 編輯任務類彆
6.11 本地保存數據
6.12 加載本地數據
6.13 重新規劃界麵
6.14 任務類型的Model
6.15 動態設置任務列錶界麵的Title
6.16 增加和編輯任務類型
6.17 任務類型的本地化保存
6.18 數據保護措施
6.19 重構Model
6.20 數據本地化NSUserDefaults
6.21 計算還有多少個需要提醒的任務
6.22 任務類型列錶排序
6.23 添加任務類型的圖標
6.24 對應用做一些美化
6.25 任務截止時間
6.26 添加日期選擇器
6.27 本地消息通知
第7章 SpriteKit 簡介
7.1 簡單聊一聊
7.1.1 聊一聊SKNode
7.1.2 聊一聊SKScene
7.1.3 聊一聊紋理
7.1.4 聊一聊動作(Action)
7.1.5 聊一聊物理係統
7.2 如何學習SpriteKit
7.2.1 創建SpriteKit項目
7.2.2 創建
第一個場景
7.2.3 往場景中添加內容
7.2.4 讓文本動起來
7.2.5 場景的轉換
7.2.6 使用SKSpriteNode
7.2.7 添加燈光
7.2.8 物理係統
第8章 遊戲實戰-圍住神經貓
8.1 遊戲預覽
8.2 創建遊戲項目
8.3 創建背景
8.4 創建圓點類
8.5 在場景中生成圓點
8.6 神經貓的類
8.7 尋路
8.8 留個小作業
第9章 遊戲實戰-跑酷熊貓
9.1 創建遊戲工程以及導入素材
9.2 創建熊貓類
9.3 顯示一個動態的熊貓
9.4 熊貓的跳和打滾
9.5 踩踏平颱是怎麼煉成的
9.6 創建平颱類以及平颱工廠類
9.7 平颱的移動
9.8 産生源源不斷的移動平颱
9.9 移除場景之外的平颱
9.10 視差滾動背景
9.11 歡迎進入物理世界
9.12 與平颱的碰撞
9.13 二段跳的實現
9.14 熊貓的打滾動作
9.15 起跳特效
9.16 蘋果以及蘋果工廠類
9.17 計分闆
9.18 下沉和升降的平颱
9.19 加速度
9.20 重置遊戲
9.21 聲音類
9.22 修復小bug
後記
精彩書摘
4.2 基本變量和更新函數 當我們完成瞭界麵的設置,就要思考一下代碼方麵怎麼編寫。我們從主界麵上看到我們需要一個目標數字,我們用targetValue來儲存它。還需要一個變量用來記錄滑塊拖動的位置,用來和targetValue作比較,這個變量我們命名為currentValue。從主界麵上,我們看到還需要兩個變量用來存儲總分數和總迴閤數,我們可以將它們命名為score和round。 //目標數字 var targetValue :Int = 0 //拖到的數字 var currentValue :Int = 0 //總分數 var score :Int = 0 //總迴閤數 var round = 0 目標數字每個迴閤隨機生成,範圍是1至100的整數。 最後我們需要寫一個函數用來生成目標數字和更新界麵上的targetLabel,scoreLabel,roundLabel的數字。 //界麵顯示更新函數 func updateLabels(){ //目標值 targetValue = Int(1 + arc4random()%100) //給界麵上的目標label賦值 targetLabel!.text = String(targetValue) //給總分label賦值 scoreLabel!.text = String(self.score) //迴閤數+1 round++ //給總迴閤數label賦值 roundLabel!.text = String(self.round) //重置滑塊的值 slider!.value = 50 } arc4random()這個全局函數會生成9位數的隨機整數,對它100取模(%)運算就會得到0至99的之間的隨機數,加上1就得到瞭1至100的隨機數。 這時候我們可以來運行一下程序看看效果,因為程序一啓動就開始要有個目標值,所以我們的updateLabels函數在viewDidLoad函數內就要運行一次,viewDidLoad函數就是在界麵加載完畢的時候運行的函數,代碼如下: override func viewDidLoad() { super.viewDidLoad() //首次運行時生成目標值並更新labels updateLabels(); } …… 前言/序言
《Swift語言精要解析與高級應用》 一、 前言:跨越基礎,直擊精髓,解鎖Swift的無限可能 Swift,作為蘋果公司推齣的現代、強大且直觀的編程語言,以其簡潔的語法、卓越的性能和對安全性的高度關注,迅速成為iOS、macOS、watchOS及tvOS開發的首選。然而,隨著技術的不斷演進和開發者需求的日益增長,僅僅掌握Swift的基礎語法已不足以應對復雜的項目挑戰。從初學者到資深開發者,都渴望深入理解Swift的底層機製,洞悉其設計哲學,並能熟練運用高級特性解決實際問題。 《Swift語言精要解析與高級應用》正是為瞭滿足這一需求而精心打造。本書並非對Swift基礎知識的簡單羅列,而是聚焦於Swift語言核心的精要概念,輔以大量真實世界的應用場景和實戰技巧,旨在幫助讀者從“知其然”上升到“知其所以然”,最終達到“運用自如”的境界。我們希望通過本書,讓每一位Swift開發者都能更深刻地理解這門語言的強大之處,並能自信地駕馭更復雜、更具挑戰性的開發任務。 二、 目標讀者: 本書麵嚮具有一定Swift語言基礎的開發者,包括但不限於: 進階iOS/macOS/watchOS/tvOS開發者: 希望深化對Swift的理解,掌握更高效、更優雅的編程範式,解決開發中的瓶頸問題。 追求卓越性能的工程師: 關注Swift性能優化,理解底層內存管理、並發機製等,以構建更流暢、更響應迅速的應用。 對語言設計與原理感興趣的學習者: 希望深入瞭解Swift的設計理念、類型係統、協議導嚮編程等,為更廣泛的編程領域打下堅實基礎。 希望提升代碼質量與可維護性的團隊: 尋求在團隊開發中推廣更規範、更具可讀性的Swift代碼風格和設計模式。 三、 本書特色與價值: 1. 精要主義,深入淺齣: 我們選取Swift中最具代錶性、也最能體現其設計哲學和高級特性的部分進行深入剖析,避免冗餘和重復,讓讀者在有限的篇幅內獲得最大的知識密度。 2. 原理揭秘,知其所以然: 本書強調對Swift核心機製的理解,例如ARC(自動引用計數)的原理、值類型與引用類型的區彆、協議的本質、泛型的實現邏輯等。隻有理解瞭“為什麼”,纔能更好地“怎麼做”。 3. 高級特性解讀,賦能復雜場景: 重點講解Swift的高級特性,如函數式編程思想在Swift中的應用、Combine框架的響應式編程、SwiftUI聲明式UI的精髓、並發編程(Actors, async/await)的實踐、元編程(Property Wrappers, Opaque Types)的使用等,這些都是構建現代、高效、可維護應用程序的關鍵。 4. 實戰導嚮,案例驅動: 每一章節都將結閤實際開發中的典型場景,提供可運行的示例代碼,讓讀者在學習理論的同時,也能立即動手實踐,將所學知識轉化為解決實際問題的能力。 5. 性能優化進階: 深入探討Swift的性能優化策略,包括內存管理、算法優化、並發調度的使用技巧,以及如何利用Instruments等工具進行性能分析。 6. 代碼優雅與設計模式: 強調編寫“Swiftic”風格的代碼,推廣Swift社區推崇的設計模式和最佳實踐,幫助讀者寫齣更具可讀性、可維護性和擴展性的高質量代碼。 7. 前沿技術展望: 關注Swift語言的最新發展和蘋果生態係統中的前沿技術,為讀者提供未來的學習方嚮和技術洞察。 四、 內容梗概: 本書將圍繞以下幾個核心主題展開,逐步深入,構建起一個完整的Swift高級知識體係: 第一部分:Swift核心機製深度剖析 內存管理與ARC的精密運作: 深入理解值類型與引用類型的內存模型。 ARC工作原理的細緻講解,包括引用計數器的增減時機。 弱引用、無主引用、不擁有引用(unowned reference)的精確使用場景與注意事項。 循環引用的檢測與解決策略,以及內存泄漏的常見誘因。 `@autoreleasepool` 的作用與應用。 類型係統與協議導嚮編程(POP): Swift類型係統的強大之處:結構體、枚舉、類。 協議的本質:抽象的契約與多態的實現。 協議的繼承、關聯類型(associatedtypes)、自我類型(Self)的應用。 協議擴展(protocol extensions)與默認實現,實現代碼復用與功能增強。 麵嚮協議編程(Protocol-Oriented Programming, POP)的設計原則與優勢。 如何利用POP構建可組閤、可擴展的架構。 泛型的力量:編寫通用、高效的代碼: 泛型的基本概念與語法。 泛型函數、泛型類型(結構體、枚舉、類)。 泛型約束(constraints):類型約束、協議約束、`where` 子句。 泛型在集閤類型、算法實現中的廣泛應用。 理解類型擦除(Type Erasure)的概念及其在Swift中的應用。 第二部分:Swift高級特性與現代編程範式 函數式編程在Swift中的實踐: 高階函數(map, filter, reduce)的深入理解與應用。 函數作為一等公民:閉包(closures)的捕獲、逃逸(escaping)與非逃逸(non-escaping)閉包。 函數式編程風格如何提升代碼的可讀性、可測試性和可組閤性。 利用`map`, `flatMap`, `compactMap` 處理可選類型和集閤。 SwiftUI:聲明式UI開發的革命: SwiftUI的核心理念:狀態驅動、聲明式UI。 `View` 協議的構成與生命周期。 狀態管理:`@State`, `@Binding`, `@ObservedObject`, `@StateObject`, `@EnvironmentObject` 的精確區分與使用。 視圖布局與容器:`VStack`, `HStack`, `ZStack`, `List`, `ScrollView` 等。 數據流與視圖更新機製。 動畫與過渡效果的實現。 Combine:響應式編程與數據流管理: 響應式編程的核心思想:異步數據流。 `Publisher` 和 `Subscriber` 的概念。 常用操作符(Operators)的詳解與應用:`map`, `filter`, `combineLatest`, `merge`, `zip`, `flatMap` 等。 `Subject` 的不同類型及其用途。 將Combine應用於網絡請求、UI事件處理、數據同步等場景。 與SwiftUI的無縫集成。 並發編程:Actors, async/await與Modern Concurrency: 理解Swift並發模型的設計目標:簡化並發編程,提高安全性。 `async` / `await` 語法糖:同步代碼的優雅寫法。 `Task` 的生命周期與管理。 `Actor` 模型:隔離可變狀態,實現綫程安全。 `Sendable` 協議與數據安全傳遞。 並發模型中的錯誤處理。 實戰:如何使用並發模型重構現有代碼,提升應用響應速度。 屬性包裝器(Property Wrappers)與元編程: 屬性包裝器的概念、創建與應用。 利用屬性包裝器簡化代碼、實現復用(如 `@Published`, `@Environment` 等)。 自定義屬性包裝器的設計與實現。 `@autoclosure`,`@escaping` 等編譯時屬性。 不透明類型(Opaque Types) `@View`, `@Result` 的理解與使用。 Swift的元編程能力如何賦能代碼的靈活性和自動化。 第三部分:性能優化與代碼質量提升 Swift性能優化深度探索: 值類型與引用類型的性能考量。 ARC對性能的影響與優化。 理解Swift的編譯優化(Opaque Types, SIL)。 算法層麵的優化與數據結構的選擇。 如何有效利用Instruments進行性能分析與瓶頸定位。 並發編程中的性能調優策略。 設計模式在Swift中的應用: MVC, MVVM, VIPER 等常用架構模式在Swift中的實現。 創建型模式(單例、工廠)、結構型模式(裝飾器、適配器)、行為型模式(觀察者、策略)在Swift中的最佳實踐。 如何選擇閤適的設計模式以提升代碼的可維護性與擴展性。 代碼風格、可讀性與測試: Swift的編碼規範與最佳實踐。 編寫清晰、簡潔、易於理解的代碼。 利用Swift的強大特性(如 `guard`, `if let`, `switch`)提高代碼效率。 單元測試、集成測試與UI測試的重要性與實踐。 Swift Package Manager (SPM) 的使用與代碼組織。 五、 結語:擁抱Swift,成為卓越的開發者 Swift語言不斷發展,其強大的特性和優雅的設計使其在不斷變化的移動和桌麵應用開發領域中保持領先地位。《Swift語言精要解析與高級應用》將伴隨您一起,從容應對Swift的深度挑戰,掌握現代軟件開發的先進理念和實踐。無論您是渴望提升現有技能,還是希望為未來的技術浪潮做好準備,本書都將是您不可或缺的學習夥伴。讓我們一起,用Swift創造更美好的數字體驗。