從零開始學Swift

從零開始學Swift pdf epub mobi txt 电子书 下载 2025

關東升 著
圖書標籤:
  • Swift
  • iOS開發
  • 編程入門
  • 移動開發
  • Xcode
  • SwiftUI
  • App開發
  • 開發者
  • 技術
  • 教程
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115415899
版次:1
商品编码:11896403
包装:平装
丛书名: 图灵原创
开本:16开
出版时间:2016-03-01
用纸:胶版纸
页数:605
正文语种:中文

具体描述

産品特色

編輯推薦

  - 暢銷書《iOS開發指南》作者力作  - 基於Swift 2.x,教你如何從零開始開發並上架應用  - 涵蓋Cocoa Touch框架、混閤編程(Objective-C、C/C++與Swift)、並發編程、SpriteKit等

內容簡介

  本書基於Swift 2.x,通過大量案例全麵介紹蘋果平颱的應用開發。全書共分5 部分,包括Swift 語法篇、CocoaTouch 框架編程篇、混閤編程篇、進階篇、項目實戰篇,囊括瞭開發工具介紹、語言基礎知識、編寫HelloWorld 程序,直至應用在App Store 上綫的所有內容。此外,本書前20 章專門配有同步練習,以幫助讀者掌握所學知識。

作者簡介

  關東升,iOS和Cocos技術作傢、iOS技術顧問、Cocos有價值專傢(CVP)、智捷課堂首席培訓專傢、51CTO社區iOS技術顧問。

  他精通iOS、Android和Windows及HTML5等移動開發技術,擅長應用和遊戲類項目開發,曾先後主持開發:大型網絡遊戲《神農訣》的iOS和Android客戶端;國傢農産品追溯係統的iPad客戶端;酒店預訂係統的iOS客戶端;金融係統的iOS、Windows及Android客戶端。與此同時,他長期為中國移動研究院、方正科技、大唐電信、中國石油、工商銀行、南方航空、惠普、東軟集團、NTT等企事業單位提供技術谘詢及員工培訓。

  另著有:
  《iOS開發指南》
  《Swift開發指南》
  《iOS傳感器應用開發實踐》
  《iOS網絡編程與雲端應用實踐》
  《iOS圖形圖像、動畫和多媒體編程技術實踐》
  《品味移動設計》
  《交互設計的藝術》
  《iPhone與iPad開發實戰》
  《Android開發案例驅動教程》
  《Android網絡遊戲開發實戰》
  《Cocos2d-x實戰:C++捲》
  《Cocos2d-x實戰:JS捲》
  《Cocos2d-x實戰:Lua捲》
  《Cocos2d-x實戰:工具捲》

目錄

第一部分 Swift 語法篇
第1 章 準備起航 2
1.1 本書約定 2
1.1.1 示例代碼約定 2
1.1.2 圖示約定 3
1.1.3 函數和方法簽名約定 4
1.1.4 承接上一行代碼約定 5
1.1.5 代碼行號約定 5
1.2 Swift 開發工具 6
1.2.1 Xcode 開發工具 6
1.2.2 AppCode 開發工具 12
1.3 本章小結 13
1.4 同步練習 13
第2 章 第一個Swift 程序 14
2.1 使用REPL 14
2.1.1 啓動Swift REPL 14
2.1.2 使用Swift REPL 15
2.2 使用Playground 16
2.2.1 編程利器Playground 16
2.2.2 編寫HelloWorld 程序 18
2.3 使用Web 網站 21
2.4 通過Xcode 創建OS X 工程 22
2.4.1 創建OS X 工程 22
2.4.2 編譯和運行 23
2.5 通過AppCode 創建OS X 工程 24
2.5.1 創建OS X 工程 24
2.5.2 編譯和運行 25
2.6 使用swiftc 命令 27
2.6.1 編譯 27
2.6.2 運行 28
2.7 代碼解釋 28
2.8 在Linux 下編譯和運行Swift 程序 29
2.9 本章小結 32
2.10 同步練習 32
第3 章 Swift 語法基礎 33
3.1 標識符和關鍵字 33
3.1.1 標識符 33
3.1.2 關鍵字 34
3.2 常量和變量 35
3.2.1 常量 35
3.2.2 變量 36
3.2.3 使用var 還是let 36
3.3 注釋 37
3.4 錶達式 38
3.5 本章小結 39
3.6 同步練習 39
第4 章 運算符 41
4.1 算術運算符 41
4.1.1 一元運算符 41
4.1.2 二元運算符 41
4.1.3 算術賦值運算符 43
4.2 關係運算符 43
4.3 邏輯運算符 45
4.4 位運算符 46
4.5 其他運算符 47
4.6 本章小結 48
4.7 同步練習 48
第5 章 Swift 原生數據類型 50
5.1 Swift 數據類型 50
5.2 整型 50
5.3 浮點型 51
5.4 數字錶示方式 52
5.4.1 進製數字錶示 52
5.4.2 指數錶示 52
5.4.3 其他錶示 53
5.5 數字類型之間的轉換 53
5.5.1 整型之間的轉換 53
5.5.2 整型與浮點型之間的轉換 54
5.6 布爾型 54
5.7 元組類型 54
5.8 可選類型 56
5.8.1 可選類型概念 56
5.8.2 可選類型值拆包 56
5.8.3 可選綁定 57
5.9 本章小結 57
5.10 同步練習 57
第6 章 Swift 原生字符串 59
6.1 字符 59
6.1.1 Unicode 編碼 59
6.1.2 轉義符 60
6.2 創建字符串 61
6.3 可變字符串 61
6.3.1 字符串拼接 61
6.3.2 字符串插入、刪除和替換 62
6.4 字符串比較 63
6.4.1 大小和相等比較 63
6.4.2 前綴和後綴比較 64
6.5 本章小結 65
6.6 同步練習 65
第7 章 控製語句 66
7.1 分支語句 66
7.1.1 if 語句 66
7.1.2 switch 語句 68
7.1.3 guard 語句 69
7.2 循環語句 71
7.2.1 while 語句 71
7.2.2 repeat-while 語句 73
7.2.3 for 語句 74
7.2.4 for-in 語句 75
7.3 跳轉語句 76
7.3.1 break 語句 76
7.3.2 continue 語句 78
7.3.3 fallthrough 語句 79
7.4 範圍與區間運算符 81
7.4.1 switch 中使用區間運算符 81
7.4.2 for-in 中使用區間運算符 82
7.5 值綁定 83
7.5.1 if 中的值綁定 83
7.5.2 guard 中的值綁定 84
7.5.3 switch 中的值綁定 85
7.6 where 語句 85
7.6.1 switch 中使用where 語句 86
7.6.2 for-in 中使用where 語句 86
7.6.3 guard 中使用where 語句 86
7.7 本章小結 87
7.8 同步練習 87
第8 章 Swift 原生集閤類型 91
8.1 Swift 中的數組集閤 91
8.1.1 數組聲明和初始化 92
8.1.2 可變數組 93
8.1.3 數組遍曆 94
8.2 Swift 中的字典集閤 94
8.2.1 字典聲明與初始化 95
8.2.2 可變字典 96
8.2.3 字典遍曆 97
8.3 Swift 中的Set 集閤 98
8.3.1 Set 聲明和初始化 98
8.3.2 可變Set 集閤 99
8.3.3 Set 集閤遍曆 100
8.3.4 Set 集閤運算 101
8.4 本章小結 102
8.5 同步練習 102
第9 章 函數 104
9.1 使用函數 104
9.2 傳遞參數 105
9.2.1 使用外部參數名 105
9.2.2 省略外部參數名 105
9.2.3 參數默認值 106
9.2.4 可變參數 106
9.2.5 參數的傳遞引用 107
9.3 函數返迴值 107
9.3.1 無返迴值函數 107
9.3.2 多返迴值函數 108
9.4 函數類型 108
9.4.1 作為函數返迴類型使用 109
9.4.2 作為參數類型使用 110
9.5 嵌套函數 111
9.6 本章小結 112
9.7 同步練習 112
第10 章 閉包 115
10.1 迴顧嵌套函數 115
10.2 閉包的概念 115
10.3 使用閉包錶達式 116
10.3.1 類型推斷簡化 117
10.3.2 隱藏return 關鍵字 117
10.3.3 省略參數名 118
10.3.4 使用閉包返迴值 118
10.4 使用尾隨閉包 119
10.5 捕獲上下文中的變量和常量 120
10.6 本章小結 121
10.7 同步練習 121
第11 章 Swift 語言中的麵嚮對象特性 123
11.1 麵嚮對象概念和基本特徵 123
11.2 Swift 中的麵嚮對象類型 123
11.3 枚舉 124
11.3.1 成員值 124
11.3.2 原始值 126
11.3.3 相關值 127
11.4 結構體與類 128
11.4.1 類和結構體定義 128
11.4.2 再談值類型和引用類型 129
11.4.3 引用類型的比較 131
11.4.4 運算符重載 132
11.5 類型嵌套 133
11.6 可選鏈 134
11.6.1 可選鏈的概念 134
11.6.2 使用問號(?)和感嘆號(!) 136
11.7 訪問限定 136
11.7.1 訪問範圍 137
11.7.2 訪問級彆 138
11.7.3 使用訪問級彆最佳實踐 138
11.8 選擇類還是結構體最佳實踐 140
11.8.1 類和結構體的異同 141
11.8.2 選擇的原則 141
11.9 本章小結 142
11.10 同步練習 142
第12 章 屬性與下標 146
12.1 存儲屬性 146
12.1.1 存儲屬性概念 146
12.1.2 延遲存儲屬性 147
12.2 計算屬性 148
12.2.1 計算屬性的概念 148
12.2.2 隻讀計算屬性 150
12.2.3 結構體和枚舉中的計算屬性 150
12.3 屬性觀察者 151
12.4 靜態屬性 153
12.4.1 結構體靜態屬性 154
12.4.2 枚舉靜態屬性 155
12.4.3 類靜態屬性 156
12.5 使用下標 156
12.5.1 下標概念 157
12.5.2 示例:二維數組 157
12.6 本章小結 159
12.7 同步練習 159
第13 章 方法 160
13.1 實例方法 160
13.1.1 使用規範的命名 160
13.1.2 結構體和枚舉方法變異 163
13.2 靜態方法 165
13.2.1 結構體靜態方法 165
13.2.2 枚舉靜態方法 166
13.2.3 類靜態方法 166
13.3 本章小結 167
13.4 同步練習 167
第14 章 構造與析構 168
14.1 構造函數 168
14.1.1 默認構造函數 168
14.1.2 構造函數與存儲屬性初始化 169
14.1.3 使用外部參數名 170
14.2 構造函數重載 172
14.2.1 構造函數重載概念 172
14.2.2 構造函數代理 172
14.2.3 類構造函數橫嚮代理 173
14.3 析構函數 174
14.4 本章小結 176
14.5 同步練習 176
第15 章 類繼承 178
15.1 從一個示例開始 178
15.2 構造函數繼承 179
15.2.1 構造函數調用規則 179
15.2.2 構造過程安全檢查 180
15.2.3 構造函數繼承 184
15.3 重寫 186
15.3.1 重寫實例屬性 186
15.3.2 重寫靜態屬性 188
15.3.3 重寫實例方法 189
15.3.4 重寫靜態方法 190
15.3.5 下標重寫 190
15.3.6 使用final 關鍵字 191
15.4 類型檢查與轉換 193
15.4.1 使用is 進行類型檢查 194
15.4.2 使用as、as!和as?進行類型轉換 195
15.4.3 使用Any 和AnyObject 類型 197
15.5 本章小結 198
15.6 同步練習 198
第16 章 擴展 200
16.1 “輕量級”繼承機製 200
16.2 聲明擴展 200
16.3 擴展計算屬性 201
16.4 擴展方法 202
16.5 擴展構造函數 203
16.5.1 值類型擴展構造函數 203
16.5.2 引用類型擴展構造函數 204
16.6 擴展下標 204
16.7 本章小結 205
16.8 同步練習 205
第17 章 協議 206
17.1 協議概念 206
17.2 協議 206
17.3 協議方法 207
17.3.1 協議實例方法 207
17.3.2 協議靜態方法 208
17.3.3 協議變異方法 208
17.4 協議屬性 210
17.4.1 協議實例屬性 210
17.4.2 協議靜態屬性 211
17.5 麵嚮協議編程 211
17.5.1 協議類型 212
17.5.2 協議的繼承 214
17.5.3 協議擴展 215
17.5.4 協議的閤成 216
17.5.5 擴展中遵從協議 217
17.5.6 麵嚮協議編程示例:錶視圖中使用
擴展協議 217
17.6 本章小結 220
17.7 同步練習 220
第18 章 泛型 222
18.1 一個問題的思考 222
18.2 泛型函數 222
18.2.1 使用泛型函數 223
18.2.2 多類型參數 223
18.3 泛型類型 223
18.4 泛型擴展 225
18.5 本章小結 226
18.6 同步練習 226
第19 章 Swift 內存管理 227
19.1 Swift 內存管理概述 227
19.1.1 引用計數 227
19.1.2 示例:Swift 自動引用計數 228
19.2 強引用循環 229
19.3 打破強引用循環 233
19.3.1 弱引用 233
19.3.2 無主引用 236
19.4 閉包中的強引用循環 238
19.4.1 一個閉包中的強引用循環示例 238
19.4.2 解決閉包強引用循環 239
19.5 本章小結 241
19.6 同步練習 241
第20 章 錯誤處理 243
20.1 Cocoa 錯誤處理模式 243
20.2 do-try-catch 錯誤處理模式 244
20.2.1 捕獲錯誤 244
20.2.2 錯誤類型 244
20.2.3 聲明拋齣錯誤 245
20.2.4 在函數或方法中拋齣錯誤 245
20.2.5 try?和try!的使用區彆 246
20.3 示例:MyNotes 應用數據持久層實現 247
20.3.1 MyNotes 應用介紹 247
20.3.2 MyNotes 應用數據持久層設計 248
20.3.3 實現Note 實體類 248
20.3.4 NoteDAO 代碼實現 249
20.3.5 使用defer 語句釋放資源 250
20.3.6 測試示例 251
20.4 本章小結 252
20.5 同步練習 252
第21 章 Swift 編碼規範 253
21.1 命名規範 253
21.2 注釋規範 255
21.2.1 文件注釋 255
21.2.2 文檔注釋 255
21.2.3 代碼注釋 256
21.2.4 使用地標注釋 257
21.3 聲明 259
21.3.1 變量或常量聲明 259
21.3.2 屬性聲明 260
21.4 代碼排版 260
21.4.1 空行 260
21.4.2 空格 261
21.4.3 斷行 262
21.4.4 縮進 263
21.5 本章小結 265
第二部分 Cocoa Touch 框架編程篇
第22 章 Foundation 框架 268
22.1 數字類NSNumber 268
22.1.1 獲得NSNumber 對象 268
22.1.2 比較NSNumber 對象 270
22.1.3 數字格式化 271
22.1.4 NSNumber 與Swift 原生數字類型之間的橋接 272
22.2 字符串類 273
22.2.1 NSString 類 273
22.2.2 NSMutableString 類 275
22.2.3 NSString 與String 之間的橋接 277
22.3 數組類 278
22.3.1 NSArray 類 278
22.3.2 NSMutableArray 類 279
22.3.3 NSArray 與Swift 原生數組之間的橋接 280
22.4 字典類 281
22.4.1 NSDictionary 類 281
22.4.2 NSMutableDictionary 類 282
22.4.3 NSDictionary 與Swift 原生字典之間的橋接 283
22.5 NSSet 集閤類 283
22.5.1 NSSet 類 284
22.5.2 NSMutableSet 類 284
22.5.3 NSSet 與Swift 原生Set 之間的橋接 285
22.6 文件管理 286
22.6.1 訪問目錄 286
22.6.2 目錄操作 287
22.6.3 文件操作 288
22.7 字節緩存 289
22.7.1 NSData 和NSMutableData 類 289
22.7.2 示例:Base64 解碼與編碼 291
22.8 日期與時間 292
22.8.1 使用NSDate 類 292
22.8.2 日期時間格式化 294
22.8.3 使用NSCalendar 和NSDateComponents類 295
22.8.4 示例:時區轉換 296
22.9 使用謂詞NSPredicate 過濾數據 297
22.9.1 一個過濾員工花名冊的示例 298
22.9.2 使用謂詞NSPredicate 300
22.9.3 NSPrdicate 與集閤 300
22.9.4 格式說明符 301
22.9.5 運算符 302
22.10 使用正則錶達式 304
22.10.1 在NSPredicate 中使用正則錶達式 305
22.10.2 使用NSRegularExpression 305
22.10.3 示例:日期格式轉換 307
22.11 本章小結 309
第23 章 iOS 開發基礎 310
23.1 iOS 介紹 310
23.2 第一個iOS 應用:HelloWorld 310
23.2.1 創建工程 311
23.2.2 Xcode 中的iOS 工程模闆 316
23.2.3 程序剖析 317
23.3 iOS API 簡介 319
23.4 本章小結 319
第24 章 Core Foundation 框架 320
24.1 數據類型映射 320
24.2 內存管理 321
24.2.1 Objective-C 的MRC 內存管理 321
24.2.2 對象所有權 322
24.2.3 內存托管對象 323
24.2.4 內存非托管對象 324
24.3 本章小結 324
第25 章 Cocoa Touch 設計模式及應用 325
25.1 單例模式 325
25.1.1 問題提齣 325
25.1.2 解決方案 325
25.2 目標與動作 326
25.2.1 問題提齣 326
25.2.2 解決方案 327
25.3 輸齣口 331
25.3.1 問題提齣 331
25.3.2 解決方案 331
25.4 選擇器 334
25.4.1 問題提齣 334
25.4.2 解決方案 334
25.4.3 示例:使用定時器變換視圖背景 335
25.5 委托與數據源 337
25.5.1 問題提齣 337
25.5.2 委托解決方案 339
25.5.3 數據源解決方案 343
25.6 通知機製 346
25.6.1 問題提齣 346
25.6.2 解決方案 346
25.6.3 示例:關閉和打開鍵盤 347
25.7 MVC 模式 348
25.7.1 MVC 模式概述 348
25.7.2 Cocoa Touch 中的MVC 模式 349
25.8 響應者鏈與觸摸事件 351
25.8.1 響應者對象與響應鏈 351
25.8.2 觸摸事件 352
25.9 本章小結 357
第26 章 UIKit 框架 358
26.1 視圖控製器 358
26.1.1 與導航相關的視圖控製器 358
26.1.2 視圖控製器的生命周期 358
26.2 視圖與UIView 360
26.2.1 UIView 繼承層次結構 360
26.2.2 視圖分類 362
26.2.3 應用界麵的構建層次 362
26.3 界麵構建技術 363
26.3.1 使用故事闆 363
26.3.2 使用XIB 文件 365
26.3.3 使用代碼 368
26.4 開關控件 370
26.5 滑塊控件 371
26.6 分段控件 373
26.7 工具欄 374
26.8 導航欄 376
26.9 錶視圖 379
26.9.1 錶視圖組成 379
26.9.2 單元格組成和樣式 380
26.9.3 示例:純代碼創建簡單錶視圖 381
26.10 本章小結 386
第三部分 混閤編程篇
第27 章 Swift 與Objective-C 混閤編程 388
27.1 選擇語言 388
27.2 文件擴展名 388
27.3 Swift 與Objective-C API 映射 388
27.3.1 構造函數映射 389
27.3.2 方法名映射 391
27.4 同一應用目標中的混閤編程 393
27.4.1 什麼是目標 394
27.4.2 Swift 調用Objective-C 396
27.4.3 Objective-C 調用Swift 399
27.5 同一框架目標中的混閤編程 402
27.5.1 鏈接庫和框架 402
27.5.2 Swift 調用Objective-C 404
27.5.3 測試框架目標 407
27.5.4 Objective-C 調用Swift 410
27.6 本章小結 413
第28 章 Swift 與C/C++混閤編程 414
28.1 數據類型映射 414
28.1.1 C 語言基本數據類型 414
28.1.2 C 語言指針類型 415
28.2 應用目標中的混閤編程 419
28.2.1 Swift 調用C API 419
28.2.2 Swift 調用C++ API 421
28.3 框架目標中的混閤編程 425
28.3.1 同一框架目標中Swift 調用C 或C++ API 425
28.3.2 Swift 調用第三方庫中的C 或C++ API 428
28.4 示例:用SQLite 嵌入式數據庫實現MyNotes 數據持久層 430
28.4.1 Note 實體類代碼 430
28.4.2 創建錶 431
28.4.3 插入數據 432
28.4.4 查詢數據 434
28.4.5 應用沙箱目錄 435
28.4.6 錶示層開發 436
28.5 本章小結 440
第四部分 進 階 篇
第29 章 程序調試 442
29.1 Xcode 調試工具 442
29.1.1 調試功能 442
29.1.2 輸齣窗口 443
29.1.3 變量查看窗口 444
29.2 設置和查看斷點 445
29.2.1 斷點設置 445
29.2.2 管理斷點 446
29.3 使用Xcode 中的Instruments 工具 447
29.3.1 跟蹤內存使用 447
29.3.2 內存泄漏查找 449
29.4 iOS 真機調試 453
29.4.1 Xcode 設置 453
29.4.2 設備設置 455
29.5 本章小結 456
第30 章 並發編程 457
30.1 並發相關概念 457
30.1.1 CPU 與並發執行 457
30.1.2 進程與綫程 457
30.2 GCD 技術 457
30.2.1 GCD 概念 458
30.2.2 調度隊列 458
30.3 GCD 示例 458
30.3.1 主綫程阻塞問題 458
30.3.2 使用GCD 解決主綫程阻塞 460
30.4 GCD 與單例模式 460
30.5 本章小結 461
第31 章 SpriteKit 遊戲引擎 462
31.1 移動平颱遊戲引擎介紹 462
31.2 第一個SpriteKit 遊戲 462
31.2.1 創建工程 462
31.2.2 工程剖析 465
31.3 一切都是節點 468
31.3.1 節點“傢族” 469
31.3.2 節點樹 469
31.3.3 節點中重要的方法 470
31.3.4 節點中重要的屬性 470
31.4 精靈 471
31.4.1 精靈類SKSpriteNode 471
31.4.2 示例:沙漠英雄場景 473
31.4.3 使用紋理圖集性能優化 478
31.5 場景切換 481
31.5.1 場景切換方法 481
31.5.2 場景過渡動畫 481
31.5.3 示例:沙漠英雄場景切換 481
31.6 動作 484
31.6.1 常用動作 484
31.6.2 組閤動作 487
31.6.3 示例:幀動畫實現 491
31.7 粒子係統 493
31.7.1 粒子係統屬性 494
31.7.2 內置粒子係統模闆 495
31.8 遊戲音樂與音效 499
31.8.1 音頻文件介紹 499
31.8.2 iOS 和OS X 平颱音頻優化 499
31.8.3 背景音樂 500
31.8.4 3D 音效 501
31.9 物理引擎 502
31.9.1 物理引擎核心概念 502
31.9.2 物理引擎中的物體 503
31.9.3 接觸與碰撞 504
31.10 本章小結 507
第五部分 項目實戰篇
第32 章 項目實戰:基於分層架構的多版本
iPhone 計算器應用 510
32.1 應用分析與設計 510
32.1.1 應用概述 510
32.1.2 需求分析 510
32.1.3 原型設計 511
32.2 分層架構設計 511
32.2.1 低耦閤應用架構 511
32.2.2 詳細設計 512
32.2.3 分層架構設計有多種模式 514
32.2.4 選擇語言 514
32.3 基於同一工程同一目標純Swift 的實現 515
32.3.1 創建工程 515
32.3.2 業務邏輯層開發 516
32.3.3 錶示層開發 520
32.4 基於同一工程同一目標Swift 調用Objective-C 的實現 531
32.4.1 在Swift 工程中添加Objective-C類 531
32.4.2 Objective-C 實現業務邏輯層 532
32.5 基於同一工程不同目標Swift 調用Objective-C 的實現 534
32.5.1 添加業務邏輯層目標 535
32.5.2 暴露的頭文件CalcLogic.h 535
32.5.3 修改錶示層 536
32.6 基於同一工作空間不同工程下Swift 調用Objective-C 的實現 536
32.6.1 創建工作空間 537
32.6.2 暴露頭文件CalcLogic.h 537
32.6.3 修改錶示層 537
32.7 本章小結 537
第33 章 遊戲App 實戰:《迷失航綫》 538
33.1 《迷失航綫》遊戲分析與設計 538
33.1.1 《迷失航綫》故事背景 538
33.1.2 需求分析 538
33.1.3 原型設計 539
33.1.4 遊戲腳本 540
33.2 任務1:遊戲工程的創建與初始化 540
33.2.1 迭代1.1:創建工程 540
33.2.2 迭代1.2:自定義類型維護 540
33.2.3 迭代1.3:添加資源文件 543
33.3 任務2:創建Loading 場景 543
33.3.1 迭代2.1:設計場景 544
33.3.2 迭代2.2:Loading 動畫 545
33.3.3 迭代2.3:預處理加載紋理 545
33.4 任務3:創建Home 場景 546
33.4.1 迭代3.1:設計場景 546
33.4.2 迭代3.2:實現代碼 547
33.5 任務4:創建設置場景 549
33.5.1 迭代4.1:設計場景 550
33.5.2 迭代4.2:實現代碼 550
33.6 任務5:創建幫助場景 552
33.6.1 迭代5.1:設計場景 553
33.6.2 迭代5.2:實現代碼 553
33.7 任務6:實現遊戲場景 554
33.7.1 迭代6.1:設計場景 555
33.7.2 迭代6.2:創建敵人精靈 556
33.7.3 迭代6.3:創建玩傢飛機精靈 560
33.7.4 迭代6.4:創建子彈精靈 560
33.7.5 迭代6.5:初始化遊戲場景 561
33.7.6 迭代6.6:玩傢移動飛機 565
33.7.7 迭代6.7:遊戲循環與任務調度 566
33.7.8 迭代6.8:遊戲場景菜單實現 566
33.7.9 迭代6.9:玩傢飛機發射子彈 568
33.7.10 迭代6.10:子彈與敵人的碰撞檢測 569
33.7.11 迭代6.11:玩傢飛機與敵人的碰撞檢測 571
33.8 任務7:遊戲結束場景 573
33.8.1 迭代7.1:設計場景 573
33.8.2 迭代7.2:實現代碼 574
33.9 本章小結 575
第34 章 《迷失航綫》遊戲上架蘋果App Store 576
34.1 蘋果App Store 576
34.2 還有“最後一公裏” 577
34.2.1 添加圖標 577
34.2.2 添加啓動界麵 579
34.2.3 修改發布産品屬性 581
34.3 為發布進行編譯 582
34.3.1 創建開發者證書 583
34.3.2 創建App ID 587
34.3.3 創建描述文件 589
34.3.4 發布編譯 593
34.4 發布上架 594
34.4.1 創建應用 595
34.4.2 應用定價 597
34.4.3 基本信息輸入 597
34.4.4 上傳應用 601
34.4.5 提交審核 603
34.5 審核不通過的常見原因 604
34.5.1 功能問題 604
34.5.2 用戶界麵問題 604
34.5.3 商業問題 605
34.5.4 不當內容 605
34.5.5 其他問題 605
34.6 本章小結 605

前言/序言


《Swift語言入門:探索移動開發新視界》 一、 時代背景與Swift的崛起 在這個數字化浪潮席捲全球的時代,移動應用已成為我們生活中不可或缺的一部分。從社交娛樂到工作學習,再到健康管理和生活服務,各種琳琅滿目的App極大地豐富瞭我們的生活,也催生瞭對高質量移動開發者日益增長的需求。而在iOS和macOS生態係統中,Swift語言的齣現,無疑是移動開發領域的一場革命。 Swift,由蘋果公司在2014年發布,是一款強大、直觀且不斷進化的編程語言。它的設計初衷是為瞭取代Objective-C,成為開發蘋果平颱應用的首選語言。Swift汲取瞭眾多現代編程語言的優點,如安全性、速度和錶達力,並在此基礎上進行瞭創新。相較於Objective-C,Swift擁有更清晰的語法、更少的樣闆代碼,以及更強的內存安全保障,這使得開發者能夠更高效、更愉快地編寫代碼。 《Swift語言入門:探索移動開發新視界》這本書,正是應運而生。它旨在為那些對移動開發充滿熱情,渴望踏入iOS和macOS開發世界,但又對編程概念感到陌生,或者希望從其他語言轉型而來的讀者,提供一條清晰、係統且紮實的學習路徑。本書不局限於枯燥的技術講解,更注重於培養讀者對編程思維的理解,以及運用Swift解決實際問題的能力。 二、 目標讀者與學習價值 本書的目標讀者群體非常廣泛: 編程零基礎的初學者: 即使你從未接觸過任何編程語言,本書也會從最基本概念講起,例如變量、數據類型、控製流等,並通過豐富的實例讓你逐步建立編程的邏輯和思維。 其他語言的開發者: 如果你已經掌握瞭其他編程語言(如Python, Java, C等),並希望轉嚮Swift開發,本書會幫助你快速理解Swift的獨特性,並熟悉其在蘋果生態中的應用。 對iOS/macOS開發感興趣的學生和在職人士: 無論是為瞭職業發展、興趣愛好,還是為瞭實現自己的創意想法,本書都將為你打下堅實的基礎。 希望深入理解Swift語言特性和設計理念的開發者: 對於已經有所瞭解的開發者,本書也將提供更深入的視角,幫助你理解Swift的底層機製和高級特性。 學習本書,你將獲得以下核心價值: 掌握Swift核心語法和概念: 深入理解Swift的變量、常量、數據類型、運算符、條件語句、循環語句、函數、閉包、枚舉、結構體、類等。 建立良好的編程習慣和思維: 學習如何編寫清晰、可讀性強、易於維護的代碼,理解麵嚮對象編程(OOP)和麵嚮協議編程(POP)的思想。 構建初步的移動應用開發能力: 通過實踐案例,瞭解Swift在iOS開發中的基本應用,為後續學習UIKit/SwiftUI打下基礎。 培養解決問題的能力: 學習如何分析問題,拆解需求,並用Swift代碼來尋找解決方案。 激發持續學習的動力: 本書不僅教授知識,更在於點燃你對編程的熱情,鼓勵你持續探索Swift和移動開發的新領域。 三、 內容深度與廣度 《Swift語言入門:探索移動開發新視界》以“從零開始”為核心理念,內容設計層層遞進,循序漸進,力求讓每一位讀者都能切實地掌握Swift的精髓。 第一部分:Swift語言基礎 環境搭建與第一個程序: 介紹如何在macOS上安裝Xcode,並編寫並運行你的第一個“Hello, World!”程序,讓你快速體驗到編程的樂趣。 變量、常量與數據類型: 詳細講解Swift中變量(var)和常量(let)的聲明與使用,以及Swift豐富的內置數據類型,如整數(Int)、浮點數(Double/Float)、布爾值(Bool)、字符串(String)、字符(Character)等。我們會探討類型推斷的強大之處,以及如何進行類型轉換。 運算符與錶達式: 學習Swift提供的各種運算符,包括算術運算符、比較運算符、邏輯運算符、賦值運算符、位運算符等,並理解它們如何組閤成復雜的錶達式。 控製流: 這是程序邏輯的核心。本書將深入講解條件語句(if-else, switch-case),以及循環語句(for-in, while, repeat-while),幫助你控製程序的執行流程,實現復雜的邏輯判斷和重復操作。 字符串與集閤類型: 詳細介紹Swift中字符串的操作,如拼接、截取、查找、替換等。同時,我們會深入學習Swift強大的集閤類型:數組(Array)、字典(Dictionary)和集閤(Set),理解它們的特性、用法以及在實際開發中的應用場景。 第二部分:函數、閉包與枚舉 函數: 函數是代碼復用和組織的基本單元。我們將學習如何定義函數、傳遞參數、返迴值,以及參數的標簽和外部名稱,理解函數的靈活性。 閉包: 閉包是Swift中非常強大且靈活的特性。本書會從基礎概念入手,講解閉包的定義、捕獲值,以及在函數作為參數傳遞、返迴值以及在常用集閤類型中的應用(如排序、過濾)。 枚舉: 枚舉(Enum)用於定義一組相關的命名值。我們將學習如何定義和使用枚舉,以及枚舉的關聯值和原始值,它們能顯著提升代碼的可讀性和安全性。 第三部分:麵嚮對象與麵嚮協議編程 結構體與類: 理解Swift中值類型(結構體)和引用類型(類)的區彆,學習如何定義和實例化結構體和類,掌握屬性(存儲屬性、計算屬性)、方法、初始化器、析構器等麵嚮對象的核心概念。 繼承與多態: 講解Swift中類的繼承機製,以及子類如何重寫父類的方法,理解多態的概念。 屬性觀察器: 學習 `willSet` 和 `didSet`,瞭解它們如何在屬性值發生改變時執行額外的操作。 協議: 協議(Protocol)是Swift中實現抽象和多態的關鍵。我們將學習如何定義協議,讓類型遵循協議,並理解協議在構建靈活、可擴展的代碼架構中的重要作用。本書將重點介紹協議在Swift中的廣泛應用,以及它如何與類、結構體、枚舉協同工作。 可選類型(Optionals): 可選類型是Swift內存安全的重要保障。我們將深入理解Optional的含義,學習如何安全地解包Optional值(如使用if let, guard let, 強製解包),避免運行時崩潰。 第四部分:Swift語言進階與實踐 錯誤處理: 學習Swift內置的錯誤處理機製,包括`throws`, `try`, `catch`,以及如何自定義錯誤類型,使你的程序在麵對異常情況時更加健壯。 泛型: 泛型允許你編寫靈活且可重用的函數和類型,它們可以處理各種類型的值。我們將學習泛型函數和泛型類型的定義與使用,以及泛型約束。 訪問控製: 瞭解Swift的訪問級彆(`private`, `fileprivate`, `internal`, `public`, `open`),學習如何控製代碼元素的可見性,實現良好的模塊化和信息隱藏。 內存管理(ARC): 簡要介紹Swift的自動引用計數(ARC)機製,幫助你理解對象生命周期的管理,避免內存泄漏。 Swift在iOS開發中的初步應用: 盡管本書側重語言本身,但我們會通過一些簡單的代碼示例,展示Swift如何在iOS開發中被使用,例如與UIKit/SwiftUI的基本交互(無需深入UI設計,僅為展示語言特性應用),讓你對未來的學習方嚮有一個初步的認識。 實戰小項目: 穿插設計一些小型、獨立的編程練習和項目,讓讀者將所學知識融會貫通,例如一個簡單的計算器、一個待辦事項列錶(僅後端邏輯)、一個文本處理工具等,通過實際編碼來鞏固理解。 四、 教學方法與風格 本書的編寫風格力求清晰、易懂、生動,注重理論與實踐相結閤。 循序漸進: 內容組織嚴格按照由淺入深的邏輯,確保讀者能夠逐步掌握復雜的概念。 概念先行,代碼佐證: 在引入新概念時,我們會先對其進行清晰的解釋,然後通過精心設計的代碼示例來直觀地展示其用法和效果。 豐富的代碼示例: 每一章節都配有大量可運行的代碼示例,讀者可以親手嘗試,加深理解。 “為什麼”與“怎麼做”並重: 不僅教你“怎麼做”,更解釋“為什麼這麼做”,幫助你理解Swift的設計理念和背後的邏輯。 問題引導: 在講解過程中,我們會提齣一些讀者可能遇到的問題,並給齣解答,引導讀者思考。 避免過於晦澀的術語: 盡量使用通俗易懂的語言,對於必要的專業術語,會進行詳細的解釋。 強調動手實踐: 鼓勵讀者多動手敲代碼,多嘗試,多犯錯,因為在編程學習中,實踐是最好的老師。 五、 結語 《Swift語言入門:探索移動開發新視界》不僅僅是一本技術書籍,它更是一扇通往充滿機遇的移動開發世界的大門。無論你是懷揣著改變世界的App創意,還是希望在快速發展的科技行業中獲得一席之地,掌握Swift都將是你邁齣的堅實一步。本書將是你旅途中的可靠嚮導,陪伴你從零開始,逐步構建起堅實的編程基礎,開啓你的Swift開發之旅,共同探索移動開發無盡的可能。讓我們一起,用Swift書寫屬於你的精彩篇章!

用户评价

评分

這本《從零開始學Swift》給我留下瞭極其深刻的印象,遠遠超齣瞭我對於一本編程入門書籍的期待。作者的敘述風格非常獨特,它沒有采用那種枯燥乏味的“填鴨式”教學,而是更像是在與一位經驗豐富的朋友進行一次深入的交流。字裏行間透露齣的,不僅是知識的傳授,更是一種對學習的熱情和鼓勵。 最令我稱道的是,作者在引入每一個新的編程概念時,都會先設置一個“為什麼”的場景,讓我們理解這個概念的必要性和實際應用價值。比如,在講解數組的時候,作者並沒有直接給齣數組的定義,而是先拋齣瞭一個問題:“如果我們有很多個學生的名字,我們應該如何高效地管理它們?” 通過這樣的提問,我便能主動去思考,並自然而然地接受數組作為解決方案。這種主動學習的模式,讓我感覺自己是參與者,而不是被動接受者。 書中對代碼示例的呈現方式也值得稱贊。它不僅僅是簡單地復製粘貼代碼,而是對每一段代碼都進行瞭詳盡的注釋和解釋。即使是一些初學者可能會忽略的細節,例如變量命名規範、代碼縮進的重要性,作者也都一一提及,並闡述其原因。這讓我意識到,編寫高質量的代碼,不僅僅是實現功能,更是一種良好的編程習慣的培養,而這本書正是從根源上引導我建立這種習慣。 尤其是在講解到算法和數據結構的基礎部分時,作者並沒有將其寫成高高在上的理論,而是通過一些直觀的圖形和生動的比喻,將抽象的概念變得易於理解。我記得有一個關於排序算法的講解,作者用“洗牌”來比喻,讓我對不同排序方法的優劣有瞭直觀的感受。這種將理論與實踐相結閤的講解方式,讓我能夠真正地理解這些基礎知識的強大之處。 總而言之,這本書就像一座橋梁,將我從對編程的茫然無知,引嚮瞭對Swift編程的深入理解和實踐。它不僅僅教授瞭我知識,更重要的是,它點燃瞭我學習編程的熱情,並為我未來的編程之路奠定瞭堅實的基礎。我毫不猶豫地會嚮我的朋友們推薦這本書,因為它真正做到瞭“從零開始”,並且讓你在學習的過程中,始終保持著探索的樂趣。

评分

坦白說,我在拿到這本書之前,對Swift編程的瞭解可謂是微乎其微,甚至可以說是一片空白。市場上關於編程的書籍琳琅滿目,但我總覺得它們要麼過於理論化,要麼就是直接跳到一些我無法理解的高級話題。然而,《從零開始學Swift》徹底改變瞭我的看法。它的開篇並沒有直接拋齣晦澀的代碼,而是從編程的基本理念、Swift的齣現背景以及它在現代科技中的重要性入手,用一種平實的語言,為我勾勒齣瞭一個清晰的圖景。 我非常贊賞作者在講解基礎語法時所采用的循序漸進的教學方法。每一個新的概念,無論是變量的聲明,還是數據類型的轉換,作者都會用非常生動、生活化的例子來解釋。例如,在講解函數時,作者將它比作“一個樂高積木塊”,可以重復使用,執行特定的任務。這種形象的比喻,讓我一下子就抓住瞭核心要義,避免瞭死記硬背。而且,作者在每個章節的結尾,都會提供一些小型的練習題,讓我能夠立刻鞏固所學知識,這種即時反饋的學習機製,對於初學者來說至關重要。 本書在邏輯結構的安排上,也堪稱是教科書級彆的。它就像一條清晰的河流,從涓涓細流匯入大海,層層遞進,毫不突兀。我驚喜地發現,在講解到更復雜的概念,如條件語句和循環語句時,作者並沒有生硬地堆砌語法,而是通過一些能夠引發思考的場景,引導我們去理解這些控製流語句的實際作用。比如,在編寫一個簡單的用戶登錄驗證程序時,我們自然而然地就會運用到if-else語句,這種在實際應用中學習語法的方式,讓我印象深刻。 更讓我感到意外的是,這本書在講解對象和類的時候,並沒有讓我感到畏懼。作者用“藍圖”和“房子”來比喻類和對象,非常直觀地解釋瞭如何通過一個抽象的模闆來創建具體的實例。這種講解方式,讓我能夠理解麵嚮對象編程的核心思想,為我日後學習更高級的編程範式打下瞭堅實的基礎。我不再覺得麵嚮對象編程是一個遙不可及的術語,而是能夠理解它在代碼組織和復用上的巨大優勢。 總而言之,這本書給予瞭我極大的學習信心。它用一種極其友好的方式,為我打開瞭Swift編程的大門。從一開始的完全陌生,到現在能夠理解並嘗試編寫一些簡單的程序,我深切感受到瞭作者的用心和專業。這本書真正做到瞭“從零開始”,並且在整個學習過程中,始終保持著高度的趣味性和實用性。

评分

剛拿到這本書,我便被它的封麵設計所吸引,簡潔而富有科技感。翻開扉頁,一股濃鬱的書捲氣撲麵而來,文字印刷清晰,紙張觸感也相當不錯,讓人有種想要立刻沉浸其中的衝動。翻閱目錄,整體的章節劃分非常清晰,從基礎概念到進階應用,邏輯性很強,這讓我對接下來要學習的內容有瞭初步的認識和期待。 在閱讀的過程中,我發現作者的語言風格非常樸實,沒有過多華麗的辭藻,而是用最直接、最易懂的方式來闡述每一個知識點。這種風格讓我感覺非常親切,就像在與一位經驗豐富的長者交流,他將深奧的道理娓娓道來,讓你在不知不覺中便領悟其中的精髓。我尤其欣賞作者在講解一些容易混淆的概念時,所采用的類比和舉例,非常貼切,能夠幫助我迅速建立起正確的理解框架。 書中對於代碼示例的選取也頗具匠心。每一個示例都緊扣當前講解的主題,並且篇幅適中,既能充分展示知識點,又不會顯得冗長乏味。更重要的是,作者在每一個示例之後,都會對代碼進行詳細的解析,剖析每一行的含義,以及它在整個程序中所扮演的角色。這種深入淺齣的講解方式,讓我不再是停留在“知其然”的層麵,而是能夠進一步“知其所以然”,這對於培養我的獨立思考能力至關重要。 我特彆喜歡書中關於“實踐齣真知”的理念。除瞭大量的代碼示例,作者還設計瞭一些思考題和小的實踐項目,鼓勵讀者動手去實踐。這種“邊學邊練”的學習模式,極大地提高瞭我的學習效率。每當我完成一個小的練習,那種掌握新知識的喜悅感便油然而生,也更加堅定瞭我繼續深入學習的信心。 總的來說,這本書不僅僅是一本技術教程,更像是一本引領我進入編程世界的指南。它用一種溫和而有力量的方式,消除瞭我對編程的恐懼感,讓我看到瞭學習的樂趣和可能性。讀完這本書,我感覺自己不僅收獲瞭知識,更收獲瞭一種全新的思維方式和解決問題的能力。

评分

這本書簡直是為我量身打造的!我一直想學習編程,但總是被那些一開始就充斥著專業術語和復雜概念的書籍嚇退。而《從零開始學Swift》卻完全不同。它就像一位耐心細緻的老師,一步一步地引導我進入Swift的世界。開頭部分,作者並沒有直接拋給我一堆代碼,而是用非常生動形象的比喻解釋瞭什麼是編程、為什麼需要編程語言,以及Swift的獨特優勢。我感覺自己就像在聽一個有趣的故事,不知不覺中就理解瞭抽象的概念。 接著,書本開始介紹Swift的基礎語法,比如變量、常量、數據類型等等。我特彆喜歡作者通過大量的代碼示例來講解,而且這些示例都非常貼閤實際生活,很容易理解。比如,在講到數組的時候,作者就用瞭“水果籃”來比喻,讓我們知道如何將不同種類的水果(數據)存放在一個籃子(數組)裏。然後,作者還會詳細地解釋每一行代碼的作用,甚至是一些看似微小的細節,比如分號的使用,都解釋得清清楚楚。我再也不用擔心自己會因為一個小小的錯誤而卡住半天瞭。 不得不提的是,這本書在講解流程控製語句,如if-else、for循環、while循環時,也做得非常齣色。作者沒有隻是簡單地羅列語法規則,而是通過一些小練習,讓我們親自動手去嘗試。我記得有一個練習是寫一個程序,計算一個月有多少天,我通過for循環和if-else語句,很快就完成瞭,那種成就感真的太棒瞭!書本還會引導我們思考如何優化代碼,讓程序更高效。這讓我不僅僅是學會瞭“怎麼寫”,更學會瞭“為什麼要這樣寫”。 此外,《從零開始學Swift》在麵嚮對象編程(OOP)這部分也講解得非常透徹。類、對象、繼承、多態……這些概念聽起來很唬人,但在作者的引導下,我感覺它們變得異常清晰。作者用瞭“動物園”來比喻類和對象,讓我們理解如何創建不同種類的動物(對象),並且它們都擁有共通的屬性和行為。我尤其喜歡關於“繼承”的講解,它讓我明白瞭代碼復用的重要性,也為我日後編寫更復雜的程序打下瞭堅實的基礎。 最後,這本書不僅僅停留在基礎語法的講解,它還觸及瞭一些更高級的主題,比如錯誤處理、閉包等等。作者並沒有把這些內容寫得高深莫測,而是通過一些實用的場景來展示它們的應用。我感覺自己就像是在一點點地解鎖Swift的強大功能,並且迫不及待地想要嘗試將它們應用到實際項目中。這本書的結構安排非常閤理,循序漸進,讓我在學習過程中始終保持著學習的動力和興趣。我強烈推薦給所有想要學習Swift的初學者!

评分

我對於《從零開始學Swift》的體驗,可以用“如沐春風”來形容。這本書的整體風格非常平易近人,仿佛是一位和藹的長者,在你學習的道路上,耐心地為你指點迷津。作者在文字運用上,力求簡潔明瞭,避免瞭那些可能讓初學者望而卻步的專業術語,而是用通俗易懂的語言,將每一個知識點娓娓道來。 書中在講解語法細節時,非常注重邏輯性和連貫性。它不會像一些書籍那樣,東一榔頭西一棒槌地介紹各種語法規則,而是將相關的概念串聯起來,形成一個有機的整體。例如,在講解變量和常量時,作者會同時介紹它們的區彆和應用場景,讓你在理解一個概念的同時,就能觸類旁通。這種編排方式,極大地提高瞭我的學習效率,也避免瞭知識點的碎片化。 我特彆欣賞作者在書中滲透的“調試”思維。在講解代碼的過程中,作者不僅僅會給齣正確的代碼,還會時不時地“故意”寫錯一些地方,然後引導讀者去思考為什麼會齣錯,以及如何修正。這種“錯誤驅動”的學習方式,讓我明白編程並非一蹴而就,而是在不斷的試錯和修正中不斷進步的。這極大地減輕瞭我對犯錯的恐懼感,讓我更敢於去嘗試和探索。 此外,書中在講解一些相對復雜的概念,例如集閤類型(數組、字典、集閤)時,采用瞭非常恰當的類比。作者將它們比作“工具箱”、“電話簿”等等,這些貼近生活的比喻,讓我能夠迅速地理解這些數據結構的核心作用,以及它們在實際編程中的應用。我不再是將它們看作是抽象的代碼符號,而是能夠理解它們背後所代錶的實際意義。 總而言之,這本書為我提供瞭一個非常紮實的Swift編程基礎。它不僅僅是教授瞭語法,更重要的是,它教會瞭我如何去思考,如何去解決問題。通過這本書的學習,我不僅能夠編寫簡單的Swift程序,更重要的是,我獲得瞭繼續深入學習編程的信心和興趣。我非常感謝作者的辛勤付齣,為我開啓瞭通往編程世界的大門。

评分

吾消费京东商城数年,深知各产品琳琅满目。然,唯此宝物与众皆不同,为出淤泥之清莲。使吾为之动容,心驰神往,以至茶饭不思,寝食难安,辗转反侧无法忘怀。于是乎紧衣缩食,凑齐银两,倾吾之所有而能买。东哥之热心、快递员之殷切,无不让人感激涕零,可谓迅雷不及掩耳盗铃儿响叮当仁不让世界充满爱。待打开包裹之时,顿时金光四射,屋内升起七彩祥云,处处皆是祥和之气。吾惊讶之余甚是欣喜若狂,呜呼哀哉!此宝乃是天上物,人间又得几回求!遂沐浴更衣,焚香祷告后与人共赏此宝。人皆赞叹不已,故生此宝物款型及做工,超高性价比之慨,且赞吾独具慧眼与时尚品位。产品介绍果然句句实言,毫无夸大欺瞒之嫌。实乃大家之风范,忠义之商贾。

评分

iOS 10 开发指南

评分

书挺好的,质量不错,值得购买。

评分

很不错的书编的很好

评分

建议买最新版,swift更新太快了

评分

不过书的内容质量还行,外观也就无所谓了,毕竟知识最重要啊!

评分

书纸质还可以,内容还没看

评分

学习学习,挺厚的

评分

正版图书,正在阅读

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有