編輯推薦
《Swift語言實戰精講》的作者劉明洋擁有多年iOS開發經驗,曾為企業定製開發App上百款作品,App Store上綫有幾十款作品,在將編程知識轉化為實戰技能方麵有著豐富的經驗,可以幫助你將所學知識轉化為能夠實際應用在工作中的技能。
本書的審稿者汪鴻俊是無限互聯學院講授Swift課程的金牌老師,對全書的講解進行全麵把控,本書也可作為無限互聯Swift課程的課外輔導教材使用。
無限互聯、西湘創客匯、至頂網鼎力推薦。
書內代碼清單全部共享,贈無限互聯500元代金卡可抵培訓班學費。
內容簡介
《Swift語言實戰精講》通過案例精細講解用Swift語言開發App的實戰技巧。本書共分為兩大部分。部分快速瀏覽基礎知識,語法入門快人一步。第二部分包含14個章節,是實戰技巧的重頭戲,主要通過App實例來介紹iOS圖形用戶界麵的開發、數據存儲、觸摸和手勢、動畫、多媒體、網絡通信設備朝嚮和移動、定位與地圖、地址簿、短信、郵件、電話、本地化、推送通知、真機調試與iOS程序發布等高級開發技巧,一本書搞定商業化的移動開發技能。
作者簡介
劉明洋,國內著名實戰派iOS專傢,擁有雄厚的iOS開發編程實力,是國內最早從事iOS開發人群之一,項目實踐經驗豐富。計算機專業畢業後始終從事編程開發相關工作。曾先後開發過《武漢輕軌1號綫LED乘客引導係統》、《天安門顯示屏PLC監控係統》。進行iOS開發多年,曾為企業定製開發App上百款作品,AppStore上綫有幾十款作品。
內頁插圖
精彩書評
★目前國內關於用Swift語言開發App的資料甚少,而本書恰好抓住瞭這個關鍵點,提供瞭許多Demo和商業項目的案例,從培訓角度全麵講解Swift語言,使讀者深入瞭解iOS移動開發的每一個環節。一本書,一次到位,無論你之前有沒有Objective-C基礎,都可以使用Swift語言,輕鬆快速地開啓iOS開發之門,讓你能夠對企業說“我能做”。
——無限互聯CEO 熊彪 ★市麵上不乏關於Swift語言基礎知識的書籍,但當我看到明洋的這本書稿時,我的感覺是,終於有這麼一本係統全麵地從實戰的角度講解Swift語言進行移動App開發的書籍瞭。他嚮廣大Swift語言學習者和開發者分享瞭iOS商業開發方麵的實戰經驗,幫助更多開發者快速學到優化産品性能的方法,以提升産品的用戶體驗。
——西湖創客匯理事長、杭州匯文董事長 戴立 ★掌握一門新的開發語言,經曆一段時間去學習是不可避免的過程。而讓這個過程縮短最有效的方法,就是結閤實例來學習實戰開發的技巧,明洋的這本書就具備瞭這樣的特點。《Swift語言實戰精講》內容強調實戰性,涵蓋瞭Swift語法、UI開發與控件、讀寫應用程序數據、多媒體應用、OC匯編與遷移、真機調試和發布等多個方麵的內容。這是一本“端到端”的開發教程,從創建工程開始,一直覆蓋到讓App成功在App Store上架,可以說是手把手地與讀者一起完成用Swift進行App開發的過程瞭。相信這本書能夠對廣大iOS開發者有所幫助,可以做到一書在手,Swift編程不愁。
——至頂網CEO 高飛 目錄
第1章 Swift開發入門
1.1 Swift概述
1.2 搭建開發環境
1.2.1 開發環境的要求
1.2.2 係統環境搭建
1.2.3 Xcode開發工具搭建
1.3 編寫第一個程序
1.4 Swift代碼分析
1.4.1 文件構成
1.4.2 標識符
1.4.3 關鍵字
1.4.4 注釋和分號
1.4.5 代碼的構成
1.5 使用幫助文檔
1.5.1 簡介
1.5.2 下載安裝
1.5.3 使用
1.5.4 Quick Help
1.6 Swift基礎語法
1.6.1 變量和常量
1.6.2 基本數據類型及轉換
1.6.3 運算符和錶達式
1.6.4 控製流
1.6.5 枚舉和結構體
1.6.6 宏定義
1.6.7 代碼規範
第2章 Swift與Cocoa
2.1 字符串
2.1.1 初始化字符串
2.1.2 字符串常用方法介紹
2.2 集閤類型
2.2.1 數組
2.2.2 字典
2.2.3 集閤的可變性
2.3 解包
2.4 類
2.4.1 類和對象
2.4.2 屬性
2.4.3 方法
2.4.4 下標腳本
2.5 函數和閉包
2.5.1 函數
2.5.2 閉包
2.6 初始化與反初始化
2.7 id兼容性
2.8 nil對象
2.9 繼承
2.9.1 繼承
2.9.2 重寫
2.10 擴展
2.10.1 擴展的定義
2.10.2 擴展屬性
2.10.3 擴展構造器
2.10.4 擴展方法
2.10.5 擴展下標腳本
2.10.6 擴展嵌套類型
2.11 協議
2.12 自動引用計數(ARC)
2.12.1 自動引用計數的工作機製
2.12.2 類實例之間的循環強引用及解決辦法
2.12.3 閉包引起的循環強引用及解決辦法
2.13 多綫程
2.13.1 NSThread的使用
2.13.2 NSOperation和NSOperationQueue的使用
2.13.3 Grand Central Dispatch(GCD)的使用
2.14 新特性Playground
第二部分 實 戰
第3章 UI基礎
3.1 iOS開發平颱限製和方式
3.2 iOS SDK介紹
第4章 UI開發與控件
4.1 窗口與視圖
4.1.1 UIScreen、UIWindow和UIView
4.1.2 界麵鏇轉和大小處理
4.2 圖片資源的使用
4.3 UILabel
4.4 UITextField
4.5 UIButton
4.6 UITableView
4.6.1 UITableView基本使用
4.6.2 UITableView高級使用
4.6.3 自定義UITableViewCell
4.6.4 創建分組錶
4.7 UITextView
4.8 UISegmentedControl
4.9 UISlider
4.10 UISwitch和UIStepper
4.11 UIActivityIndicatorView和UIProg ressView
4.12 UIAlertView和UIActionSheet
4.13 UIImageView
4.14 UIScrollView和UIPageControl
4.15 UIWebView
4.16 UIDatePicker和UIPickerView
4.17 UIToolBar和UISearchBar
4.18 UINavigationController
4.19 UITabBarController
4.20 MVC模式
4.20.1 MVC介紹
4.20.2 Xcode實現MVC
第5章 讀寫應用程序數據
5.1 NSUserDefaults和對象歸檔
5.2 文件操作
5.3 SQLite3存儲和讀取數據
5.4 Core Data
5.5 iCloud存儲
第6章 觸摸和手勢
6.1 觸摸
6.2 手勢(UIGestureRecognizer)
第7章 多媒體應用
7.1 照片選擇
7.1.1 相冊圖片選擇
7.1.2 拍照
7.2 AV Foundation框架
7.2.1 係統聲音
7.2.2 AV音頻播放器
7.2.3 AV錄音機
7.3 Media Player框架
第8章 動畫
8.1 UIView動畫
8.2 CATransition動畫
8.3 transform屬性實現動畫
8.4 CABasicAnimation
8.5 CAKeyframeAnimation
第9章 網絡通信
9.1 判斷網絡連接情況
9.2 網絡請求JSON解析
9.3 Get、Post方式
9.4 NSURLSession加載數據、下載上傳
第10章 檢測設備朝嚮和移動
10.1 加速計和陀螺儀
10.2 判斷設備方嚮和搖晃
第11章 定位處理與地圖
11.1 CoreLocation
11.2 MapKit
第12章 地址薄、短信、郵件、電話
12.1 地址簿
12.2 短信、電話、郵件
第13章 iOS應用本地化
13.1 本地化字符串
13.2 本地化圖像
13.3 本地化Xib文件和應用名稱
第14章 OC匯編與遷移
14.1 Swift、OC互調
14.2 將Objective-C代碼遷至Swift
第15章 真機調試和發布
15.1 真機調試
15.2 發布
15.2.1 創建證書和描述文件
15.2.2 上傳提交審核
第16章 推送通知
16.1 本地推送
16.2 服務器推送
精彩書摘
Swift采用瞭Objective-C的命名參數和動態對象模型,提供瞭無縫接入現有Cocoa框架和與Objective-C混編的能力。但是不同於Objective-C和 C++ 或者 C 在同一個 .mm 文件中的混編,Swift代碼不能和Objective-C 代碼寫在同一個文件中。分屬不同文件,但相互之間可以調用,需要注意必須添加或者創建bridging header文件。
不管是在OC工程中添加.swift文件,還是在Swift項目中添加oc類文件,都會彈齣提示添加bridging header文件。點擊Yes,自動創建MixedLanguage-Bridging-Header.h文件,如果這裏不小心沒有點擊Yes,或者沒有彈齣添加Objective-C的橋接頭文件提示,也沒有關係,我們可以手動添加一個.h文件,命名為:工程名-Bridging-Header.h,添加完畢之後需要修改工程的Objective-C Bridging Header。
OC如何調用Swift寫的類
OC要想調用Swift,必須有頭文件。而Swift文件卻沒有頭文件,所在也需要産生一個頭文件。但對於OC調用Swift的頭文件比較特殊。因頭文件裏麵的機製是自動生成的,工程中看不到。
産生頭文件步驟:
選中targets->build settings ->packing->Product Module Name 中設置模塊名,這個名稱很重要。 Swift 的頭文件就是根據這個來命名的。將Defines Module設置YES,並確定Product Module Name 和 Product Name都填寫。
……
前言/序言
《Swift語言實戰精講》是一本旨在幫助開發者深入理解並熟練運用Swift語言進行實際項目開發的書籍。它不僅僅停留在語法層麵,更側重於如何在真實的應用場景中,通過Swift的高級特性和最佳實踐來構建高效、健壯、可維護的軟件。本書的內容覆蓋瞭Swift語言的核心概念、麵嚮對象和函數式編程範式在Swift中的應用、內存管理機製、並發編程模型、錯誤處理、協議導嚮編程、以及SwiftUI和Combine等現代化框架的使用。 一、 Swift語言核心與進階特性 本書的開篇會以Swift語言的核心特性為基石,但絕非簡單的羅列。我們不會止步於變量、常量、基本數據類型、集閤類型(數組、字典、集閤)這些初學者接觸的內容。相反,我們將重點深入探討: 類型安全與類型推斷的精妙之處:理解Swift強大的類型係統如何幫助我們在編譯時捕獲大量錯誤,以及編譯器如何智能地推斷類型,從而減少冗餘的代碼。我們會通過實際案例展示如何利用元組、枚舉(帶關聯值和原始值)、結構體和類來精確地定義數據模型,並理解它們在內存布局和行為上的差異。 強大的可選項(Optional)機製:Swift的可選項是其安全特性的一大亮點。我們將詳細解析`nil`的概念,以及`?`和`!`的用法。重點會放在安全解包(`if let`、`guard let`、`??`)和強製解包(`!`)的適用場景及潛在風險。我們會演示如何利用可選項來優雅地處理可能缺失的值,避免空指針異常。 控製流的進階應用:除瞭`if-else`、`switch`、`for-in`、`while`,我們還會深入探討`guard`語句的妙用,尤其是在提前退齣和條件校驗方麵的優勢。`switch`語句的模式匹配能力(範圍匹配、元組匹配、`where`子句)也是重點,它能讓代碼更加簡潔和富有錶現力。 函數式編程思想的融入:Swift對函數式編程有著良好的支持。本書將詳細講解高階函數(如`map`、`filter`、`reduce`)的原理和實用技巧。我們會展示如何利用閉包(Closures)來傳遞代碼塊,理解其捕獲外部變量的機製(值捕獲與引用捕獲),以及逃逸閉包(Escaping Closures)和非逃逸閉包(Non-Escaping Closures)的區彆和應用場景。通過函數式方法,可以寫齣更聲明式、更易於測試的代碼。 枚舉(Enum)的強大生命力:Swift的枚舉遠不止於簡單的值類型。我們將深入挖掘枚舉的關聯值(Associated Values)和原始值(Raw Values),以及枚舉可以擁有方法(Methods)和計算屬性(Computed Properties)的能力。通過協議(Protocols)與枚舉結閤,可以實現非常靈活和強大的設計模式。 結構體(Struct)與類(Class)的深度比較:理解值類型(Value Types)和引用類型(Reference Types)的核心區彆至關重要。本書會詳細對比結構體和類在內存分配(棧 vs 堆)、復製行為(拷貝 vs 共享引用)、繼承、以及協議遵守方麵的差異。我們會指導讀者在何時選擇結構體,何時選擇類,以實現最佳性能和內存管理。 二、 麵嚮對象與協議導嚮編程的實踐 Swift是一種多範式語言,它既支持麵嚮對象,也推崇協議導嚮編程(Protocol-Oriented Programming, POP)。本書將這兩個方麵有機結閤,通過大量實際案例來體現。 麵嚮對象編程的精髓:我們將詳細講解封裝(Encapsulation)、繼承(Inheritance)和多態(Polymorphism)在Swift中的實現。重點會放在類、繼承的層級設計,以及如何利用訪問控製修飾符(`private`、`fileprivate`、`internal`、`public`、`open`)來構建模塊化和可控的代碼。 協議(Protocol)的統治力:協議是Swift設計哲學中的核心。本書將深入剖析協議的定義、協議的繼承、以及如何通過協議來定義接口和契約。我們不僅會講解如何讓類型遵循協議,更會重點闡述協議的擴展(Protocol Extensions)如何實現方法默認實現、計算屬性的默認值,以及如何通過協議組閤(Protocol Composition)來實現更靈活的設計。協議導嚮編程的理念貫穿始終,它使得代碼更具擴展性、可測試性,並鼓勵開發者編寫“組閤優於繼承”的代碼。 協議與繼承的權衡:我們將討論在實際開發中,何時應該優先考慮協議,何時又不得不使用繼承,以及如何通過組閤協議和結構體/類來達到相似甚至更好的效果。 三、 內存管理與並發 高效的內存管理和安全的並發是構建高性能、高響應性應用的關鍵。 ARC(自動引用計數)的細緻解讀:Swift使用ARC來管理內存。本書將深入解析ARC的工作原理,包括強引用(Strong Reference)、弱引用(Weak Reference)和無主引用(Unowned Reference)。我們會通過復雜的循環引用場景,演示如何使用`weak`和`unowned`來打破循環,避免內存泄漏。理解ARC是避免常見內存問題的基礎。 並發編程的現代之道:隨著多核處理器的普及,並發編程變得不可或缺。本書將詳細介紹Swift的並發模型: GCD(Grand Central Dispatch):深入講解GCD的隊列(串行、並發)、任務提交方式(`sync`、`async`),以及如何使用GCD來實現異步操作和後颱處理。 OperationQueues:介紹`Operation`和`OperationQueue`如何提供更高級的並發控製,包括依賴關係、取消操作、暫停等。 Swift Concurrency (async/await):這是Swift語言層麵提供的現代化並發解決方案。我們將詳細講解`async`函數、`await`關鍵字,任務(Tasks)、Actor模型,以及如何利用它們來編寫更清晰、更安全、更易於管理的並發代碼,極大地簡化瞭異步編程的復雜性。 四、 錯誤處理的健壯之道 Swift的錯誤處理機製是其安全性的又一體現。 `Error`協議與`do-catch`:我們將詳細講解如何定義和拋齣(`throw`)自定義錯誤類型,以及如何使用`do-catch`語句來捕獲和處理這些錯誤。 `try?`與`try!`:介紹這兩種更簡潔的錯誤處理方式,並分析它們的適用場景和潛在風險。 `defer`語句的妙用:`defer`語句允許我們在當前作用域退齣之前執行一些清理操作,例如關閉文件、釋放資源等,這對於確保資源得到及時釋放至關重要。 五、 現代化框架的實戰運用 Swift語言的強大很大程度上體現在其生態係統和現代化框架上。 SwiftUI:聲明式UI開發的革命:本書將投入大量篇幅講解SwiftUI。從基本視圖(Text, Image, Button, List)、布局(Stacks, Grids, Spacers)、狀態管理(`@State`, `@Binding`, `@ObservedObject`, `@EnvironmentObject`)、導航(NavigationViews, Sheets, Alerts),到動畫、手勢、自定義視圖,我們將通過一係列實際的UI構建案例,幫助讀者快速掌握SwiftUI的聲明式編程範式。 Combine:響應式編程的利器:Combine框架是Swift用於處理異步事件流和數據流的強大工具。我們將深入講解Publisher、Subscriber、Operator的概念,以及如何利用Combine來構建響應式的數據管道。從簡單的事件發布到復雜的數據轉換和組閤,本書會提供豐富的實戰示例,展示如何使用Combine來簡化異步操作,實現更優雅的狀態管理和數據綁定。 數據持久化:我們將介紹Swift中常見的數據持久化方案,包括: UserDefaults:用於存儲少量用戶偏好設置。 FileManager:直接操作文件係統,用於存儲文件。 Core Data:Apple提供的強大對象圖管理框架,適用於構建復雜的本地數據存儲。 Realm:一種流行的移動數據庫,以其易用性和高性能而聞名。 Codable協議:用於方便地將Swift對象編碼(轉換為JSON、Property List等)和解碼(從JSON、Property List等解析),與網絡請求和數據存儲緊密結閤。 六、 架構模式與最佳實踐 除瞭語言本身和框架的應用,本書還會引導讀者思考更宏觀的軟件設計和開發實踐。 MVC、MVVM等常見架構模式:在iOS開發中,理解和運用MVC、MVVM等架構模式是構建可維護應用的基石。我們將分析它們的優缺點,並展示如何在Swift項目中應用它們。 單元測試與集成測試:講解如何使用XCTest框架編寫單元測試,以確保代碼的正確性。 代碼規範與風格:強調編寫清晰、一緻、易於閱讀的代碼的重要性,並提供一些通用的Swift代碼風格建議。 性能優化技巧:在實際開發中,性能是用戶體驗的關鍵。本書會分享一些Swift語言層麵的性能優化技巧,以及如何利用Instruments等工具來分析和定位性能瓶頸。 總結: 《Swift語言實戰精講》是一本麵嚮有一定編程基礎(不限於Swift)的開發者,旨在將其Swift語言的掌握程度提升到能夠獨立完成復雜項目開發的水平。本書的特點在於其深度、廣度與實踐性。它不是一本枯燥的語法手冊,而是一本引領讀者在Swift的世界裏進行探索、實踐,並最終掌握構建高質量應用的“實戰指南”。通過本書的學習,讀者將能夠自信地運用Swift構建現代、高效、優雅的應用程序,無論是iOS、macOS、watchOS、tvOS,還是服務器端Swift。