瘋狂 Swift 講義, 2/e

李剛

  • 出版商: 電子工業
  • 出版日期: 2016-02-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 416
  • 裝訂: 平裝
  • ISBN: 7121280760
  • ISBN-13: 9787121280764
  • 相關分類: Apple Developer
  • 已絕版

買這商品的人也買了...

商品描述

<內容簡介>

  Swift正逐步進入iOS APP的實際應用開發,而Apple在WWDC2015上發布了Swift 2.0版本,這也表明瞭Apple對Swift的支持決心,不難​​預測,Swift的市場份額肯定會超過傳統的Objective-C。
  本書是《瘋狂Swift講義》的第2版,本書以*新的OS X 10.11為平臺、以Xcode 7.1為開發工具,全面介紹了Swift 2.1的語法以及使用Swift開發iOS應用的知識。本書全面覆蓋了Swift的基本語法結構、Swift函數式編程特徵、Swift的面向對象特徵、Foundation框架的核心類庫用法等知識,並通過示例介紹瞭如何在iOS應用中混合使用Swift與Objective-C進行開發。本書重點介紹了repeat while循環、guard語句、API檢查、條件編譯、Set集合、錯誤處理機制、協議擴展等Swift 2.x新增的內容,這樣新增的內容使得Swift具有更強的生命力。
  本書並不局限於介紹Swift的簡單語法,而是從“項目驅動”的角度來講授理論。全書為Swift所有語法提供了大量的示例程序,大部分地方甚至從正、反兩方面舉例,務求使讀者能舉一反三地真正掌握Swift編程。如果讀者在閱讀本書時遇到了技術問題,可以登錄瘋狂Java聯盟(http://www.crazyit.org)發帖,筆者將會及時予以解答。

<作者簡介>

  李剛,十餘年軟件開發從業經驗,瘋狂軟件教育中心教學總監。__eol__瘋狂Java實訓營創始人,瘋狂Java體係原創圖書作者。__eol__廣東技術師範學院計算機科學系兼職副教授,5​​1CTO專家門診特邀嘉賓。__eol__培訓的學生已在華為、IBM、阿裡軟件、網易、電信盈科等名企就職。__eol__國內著名高端IT技術圖書作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級Java EE企業應用實戰》、《瘋狂iOS講義(上)(下)》、《瘋狂Ajax講義》、《瘋狂XML講義》、《經典Java EE企業應用實戰》、《Struts 2.x**指南》、《瘋狂HTML 5/CSS 3/JavaScript講義》等著作。其中瘋狂Java體系圖書均已沉澱多年,贏得極高的市場認同,多次重印成為超級暢銷圖書,並被多所“985”、“211”高校選作教材,部分圖書已被翻譯成繁體中文版,授權到台灣地區。

<目錄>

第1章Swift語言與開發環境1
1.1 Swift語言簡介2
1.1.1 Swift語言2
1.1.2關於Swift的幾個誤解2
1.2搭建Swift開發環境3
1.2.1下載和安裝Xcode 4
1.2.2安裝輔助工具和文檔6
1.3第一個Swift程序7
1.3.1 Swift程序入口7
1.3.2使用Playground工具8
1.3.3開發Swift項目10
1.4使用終端窗口編譯、運行Swift程序12
1.4.1使用swiftc編譯Swift程序12
1.4.2使用swift交互命令14
1.5熟悉Xcode 14
1.5.1創建iOS項目14
1 .5.2熟悉導航面板15
1.5.3熟悉檢查器面板18
1.5.4熟悉庫面板20
1.5.5使用Xcode的幫助系統22
1.6本章小結24
第2章Swift的基本數據類型25
2.1註釋26
2.2變量與常量27
2.2.1分隔符27
2.2.2標識符規則29
2.2.3 Swift的關鍵字29
2.2.4聲明變量和常量30
2.2.5輸出變量和常量32
2.3整型32
2.4浮點型34
2.5數值型之間的類型轉換35
2.5.1整型之間的轉換35
2. 5.2浮點型與整型之間的轉換37
2.6 Bool型38
2.7元組(tuple)類型38
2.7.1定義元組類型的變量39
2.7.2獲取元組中的元素值39
2.7.3為元組中的元素命名40
2.8可選類型40
2.8.1可選和nil 41
2.8.2強制解析42
2.8.3可選綁定43
2.8.4隱式可選類型43
2.9類型別名45
2.10字符和字符串45
2.10.1字符類型45
2.10.2字符串類型46
2.10.3字符串的可變性48
2.10.4字符串的基本操作48
2.10.5字符串比較50
2.10.6獲取字符串中字符的Unicode編碼50
2.11本章小結51
第3章運算符和表達式52
3.1賦值運算符53
3.2算術運算符54
3.3溢出運算符57
3.3.1值的上溢57
3.3.2值的下溢58
3.4位運算符58
3.5擴展後的賦值運算符61
3.6範圍運算符61
3.6.1閉範圍運算符61
3.6.2半開範圍運算符61
3.7比較運算符62
3. 8邏輯運算符63
3.8.1 Swift的3個邏輯運算符63
3.8.2組合邏輯與括號63
3.9三目運算符64
3.10 nil合併運算符65
3.11運算符的結合性和優先級66
3.12本章小結67
第4章流程控制68
4.1順序結構69
4.2分支結構69
4.2.1 if條件語句69
4.2.2 switch分支語句72
4. 2.3 switch不存在隱式貫穿(fallthrough)和顯式貫穿73
4.2.4使用break結束switch 74
4.2.5 switch的範圍匹配75
4.2.6 switch的元組匹配75
4. 2.7 case的值綁定77
4.2.8 case的where子句78
4.3循環結構79
4.3.1 while循環語句79
4.3.2 repeat while循環語句80
4.3.3 for循環81
4.3.4 for-in循環83
4.3.5嵌套循環83
4.4控制循環結構84
4.4.1使用break結束循環84
4.4.2使用continue忽略本次循環的剩下語句85
4.4.3使用return結束方法86
4.5 Swift 2新增的guard語句87
4.6 Swift 2新增的API檢查88
4.7條件編譯89
4.8本章小結90
第5章集合91
5.1數組92
5.1.1聲明和創建數組92
5.1.2使用數組93
5.1.3使用for-in遍歷數組95
5.1.4數組的可變性和數組的修改95
5.1.5多維數組98
5.1.6數組的應用舉例101
5.2 Set集合102
5.2.1聲明和創建Set 102
5.2.2使用Set 103
5.2.3使用for-in遍歷Set 104
5.2.4 Set的可變性和Set的修改104
5.2.5 Set集合元素與hashValue 106
5.2.6 Set支持的集合運算106
5.2.7 Set集合的關係運算107
5.3字典108
5.3.1聲明和創建字典109
5.3.2使用字典110
5.3.3使用for-in遍歷字典111
5.3.4單獨使用字典的keys或values ​​111
5.3.5字典的可變性和字典的修改112
5.3.6字典的應用舉例113
5.4集合的複制114
5.4.1數組與Set的複制114
5.4.2字典的複制116
5.5本章小結117
第6章函數和閉包118
6.1函數入門119
6.1.1定義和調用函數119
6.1.2函數返回值120
6.1.3遞歸函數122
6.2函數的形參123
6.2.1外部形參名123
6.2.2形參默認值124
6.2.3個數可變的形參125
6.2.4常量形參和變量形參126
6.2.5 In-Out形參126
6.3函數類型130
6.3.1使用函數類型130
6.3.2使用函數類型作為形參類型131
6.3.3使用函數類型作為返回值類型133
6.4函數重載133
6.5嵌套函數135
6.6嵌套函數與閉包137
6.6.1回顧嵌套函數137
6.6.2使用閉包表達式代替嵌套函數137
6.6.3閉包的escape 138
6.7閉包表達式139
6.7.1調用閉包(使用閉包返回值) 139
6.7.2利用上下文推斷類型140
6 .7.3省略return 141
6.7.4省略形參名141
6.7.5尾隨閉包142
6.8捕獲上下文中的變量和常量143
6.9閉包是引用類型144
6.10自動閉包145
6.11本章小結146
第7章面向對象編程(上) 147
7.1 Swift的面向對象支持148
7.1.1面向對象概述148
7.1.2 Swift的面向對像類型148
7. 2枚舉149
7.2.1定義枚舉149
7.2.2枚舉值和switch語句151
7.2.3原始值152
7.2.4關聯值153
7.2.5遞歸枚舉155
7.3類和結構體156
7.3.1定義結構體和類156
7.3.2創建實例160
7.3.3值類型與引用類型161
7.3.4引用類型的比較163
7. 3.5 self關鍵字165
7.3.6類和結構體的選擇167
7.4存儲屬性167
7.4.1實例存儲屬性與實例變量167
7.4.2結構體常量與實例屬性169
7 .4.3延遲存儲屬性169
7.5計算屬性170
7.5.1定義計算屬性170
7.5.2 set部分的簡化172
7.5.3只讀的計算屬性173
7.6屬性觀察者173
7.7方法175
7.7.1方法的所屬性176
7.7.2將方法轉換為函數176
7.7.3方法的外部形參名177
7.7.4 Swift方法的命名習慣179
7.7.5值類型的可變方法180
7.7.6屬性和方法的統一182
7.8下標183
7.8.1下標的基本用法183
7.8.2下標重載185
7 .9可選鏈187
7.9.1使用可選鏈代替強制解析187
7.9.2使用可選鏈調用方法189
7.9.3使用可選鏈調用下標190
7.10類型屬性和類型方法190
7.10.1類型成員的修飾符191
7.10.2值類型的類型屬性191
7.10.3類的類型屬性192
7.10.4值類型的類型方法193
7.10. 5類的類型方法194
7.11錯誤處理194
7.11.1拋出錯誤195
7.11.2聲明拋出錯誤195
7.11.3使用do-catch捕捉錯誤196
7.11.4將錯誤轉為可選值197
7.11.5使錯誤失效198
7.11.6使用defer回收資源199
7.12構造器200
7.12.1類和結構體的構造器200
7.12.2構造器的外部形參名201
7.12.3使用閉包或函數為屬性設置初始值203
7.12.4值類型的構造器重載204
7.13可能失敗的構造器205
7.13.1結構體與可能失敗的構造器206
7.13.2枚舉與可能失敗的構造器207
7.14本章小結208
第8章面向對象編程(下) 209
8.1繼承210
8.1.1繼承的特點210
8.1.2重寫父類的方法211
8.1.3重寫父類的屬性212
8.1.4重寫屬性觀察者214
8.1.5重寫父類的下標214
8.1.6使用final防止重寫215
8.2類的構造與析構217
8.2.1類的指定構造器和便利構造器217
8.2.2類的構造器鏈218
8. 2.3兩段式構造220
8.2.4構造器的繼承和重寫223
8.2.5類與可能失敗的構造器226
8.2.6可能失敗的構造器的傳播227
8.2 .7重寫可能失敗的構造器228
8.2.8子類必須包含的構造器230
8.2.9析構器231
8.3多態232
8.3.1多態性232
8.3 .2使用is運算符檢查類型233
8.3.3使用as運算符向下轉型234
8.3.4 Any和AnyObject 236
8.4嵌套類型237
8.5擴展238
8.5.1使用擴展添加屬性239
8.5.2使用擴展添加方法240
8.5.3使用擴展添加可變方法241
8.5.4使用擴展添加構造器241
8.5.5使用擴展添加下標242
8.5 .6使用擴展添加嵌套類型242
8.6協議243
8.6.1規範、接口與協議語法243
8.6.2協議指定的屬性要求244
8.6.3協議指定的方法要求248
8. 6.4協議指定的可變方法要求249
8.6.5協議指定的下標要求251
8.6.6協議指定的構造器要求252
8.6.7使用協議作為類型254
8.6.8合成協議255
8.6.9通過擴展為已有的類型添加協議256
8.6.10唯類(Class-Only)協議257
8.6.11可選協議258
8.6.12協議擴展260
8 .6.13輸出實例和CustomStringConvertible協議262
8.6.14使用自定義類型作為字典的key 263
8.7隱藏與封裝266
8.7.1理解封裝266
8.7.2訪問控制符266
8. 7.3訪問控制語法268
8.7.4使用訪問權限定義類型269
8.7.5子類的訪問權限270
8.7.6常量、變量、屬性、下標的訪問權限271
8.7.7構造器的訪問權限272
8.7.8協議的訪問權限273
8.7.9擴展的訪問權限273
8.7.10類型別名的訪問權限273
8.8 Swift內存管理273
8.8.1理解自動引用計數(ARC) 274
8.8.2強引用循環276
8.8.3使用弱引用解決強引用循環278
8.8.4使用無主引用解決強引用循環279
8.8.5閉包與對象的強引用循環281
8.8.6使用弱引用或無主引用解決閉包的強引用循環282
8.9 Swift面向對象語法總結283
8.10本章小結284
第9章泛型285
9. 1泛型的作用286
9.2泛型函數287
9.2.1定義泛型函數287
9.2.2定義多個類型參數288
9.3泛型類型290
9.3.1定義泛型類型290
9.3.2從泛型類派生子類291
9.3.3擴展泛型類型292
9.4類型約束292
9.5關聯類型295
9.5.1使用關聯類型295
9.5.2擴展已有類型來確定關聯類型297
9.6 where子句297
9.6.1泛型聲明的where子句297
9.6.2協議擴展的where子句298
9.7本章小結299
第10章運算符函數300
10.1運算符重載301
10.2前置和後置運算符303
10.3擴展後的賦值運算符305
10.4比較運算符305
10.5自定義運算符307
10.5. 1開發自定義運算符307
10.5.2自定義運算符的結合性和優先級308
10.6本章小結309
第11章Foundation框架詳解310
11.1包裝類311
11.1.1它們不是包裝類311
11.1.2 NSValue和NSNumber 312
11.2字符串(NSString與NSMutableString) 313
11.2.1 NSString的常用功能313
11.2.2可變字符串(NSMutableString) 315
11.3日期與時間316
11.3.1日期與時間(NSDate) 316
11.3.2日期格式器(NSDateFormatter) 317
11.3.3日曆(NSCalendar)與日期組件(NSDateComponents) 319
11.4數組(NSArray與NSMutableArray ) 320
11.4.1 NSArray的功能與用法320
11.4.2對集合元素整體調用方法322
11.4.3對NSArray進行排序324
11.4.4使用枚舉器遍歷NSArray集合元素324
11 .4.5可變量組(NSMutableArray) 325
11.5集合(NSSet與NSMutableSet) 327
11.5.1 NSSet的功能與用法327
11.5.2 NSMutableSet的功能與用法330
11.5.3 NSCountedSet的功能與用法331
11.6有序集合(NSOrderedSet與NSMutableOrderedSet) 332
11.7字典(NSDictionary與NSMutableDictionary) 333
11.7.1 NSDictionary的功能與用法334
11.7.2對NSDictionary的key進行排序336
11 .7.3對NSDictionary的key進行過濾337
11.7.4 NSMutableDictionary的功能與用法338
11.8本章小結339
第12章使用Swift開發iOS應用340
12.1從iOS項目開始341
12.1.1 iOS項目包含的文件341
12.1.2 Interface Builder簡介342
12.1.3添加控件344
12.1.4修改控件屬性345
12.1.5 UIView支持的屬性347
12.1.6 UILabel支持的屬性349
12.2 MVC 351
12.2.1程序入口和應用程序代理351
12.2.2理解iOS的MVC 353
12.2.3掌握UIViewController控制器354
12.3事件機制356
12.3.1程序獲取控件的兩種方式356
12.3.2事件處理的3種方式362
12.4代碼控制UI界面367
12.4.1不使用界面設計文件開發UI界面367
12.4.2使用代碼創建UI界面369
12.4.3自定義UI控件371
12.5本章小結374
第13章Objective-C與Swift混編375
13.1 Swift調用Objective-C 376
13.1.1創建Swift項目376
13. 1.2添加Objective-C類376
13.1.3調用Objective-C類379
13.2 Objective-C調用Swift 380
13.2.1為Objective-C項目添加Swift類381
13.2.2調用Swift類382
13.3本章小結384
第14章俄羅斯方塊385
14.1俄羅斯方塊簡介386
14.2開發遊戲界面387
14.2.1界面佈局設計387
14.2.2開發遊戲界面控件390
14.3俄羅斯方塊的數據模型391
14.3.1定義數據模型392
14.3.2初始化遊戲狀態數據393
14.4實現遊戲邏輯395
14.4.1處理方塊掉落396
14.4.2處理方塊左移400
14.4.3處理方塊右移401
14.4.4處理方塊旋轉402
14.4.5啟動遊戲404
14.5本章小結405

目錄大綱