瘋狂iOS講義(基礎篇)

瘋狂iOS講義(基礎篇)

《瘋狂iOS講義(基礎篇)》是2016年5月電子工業出版社出版的圖書,作者是李剛。

基本介紹

  • 中文名:瘋狂iOS講義(基礎篇)
  • 作者:李剛
  • 出版時間:2016年5月
  • 出版社:電子工業出版社
  • 頁數:740 頁
  • ISBN:9787121287930
  • 定價:108 元
  • 開本:16 開
內容簡介,圖書目錄,

內容簡介

本書基於《瘋狂iOS講義(上)》第2版升級而來,已真正升級成Swift、Objective-C雙語講解。本書所有案例(除前面介紹Objective-C語法部分之外)全部都提供Swift、Objective-C兩種語言的版本。本書以最新的iOS 9.2、Xcode 7.2為平台,全面介紹了iOS套用開發的基礎知識。書中每個案例、每個截圖都全面升級到iOS 9.2。本書全面、細緻地介紹了Objective-C的面向對象語法、Foundation框架的核心類庫用法、檔案 IO體系等,詳細講解了iOS套用開發的基本理論,以及iOS套用的MVC設計和事件處理編程,重點介紹了iOS界面編程、iOS套用的生命周期、Quartz 2D繪圖、坐標變換、Core Image濾鏡等內容,掌握這些基礎內容之後,即可開發出基礎的iOS App套用和簡單的iOS遊戲。本書最後介紹了一個瘋狂連連看的實例。本書詳細介紹了iOS 9新增的UIAlertController、UIStackView控制項,其中UIStackView正是為了自適應不同尺寸螢幕而設計的控制項,可用於取代早期iOS開發中的約束(約束實在是太難以管理了)。本書還重點介紹了Xcode 7提供的Storyboard Reference,通過使用Storyboard Reference,可以對大型iOS App的界面設計進行分解、重構,從而保證項目具有更好的可維護性。本書從“項目驅動”的角度來講授理論,全書一共包括近百個實例,這些示範性的實例既可幫助讀者更好地理解各知識點在實際開發中的套用,也可供讀者在實際開發時作為參考,拿來就用。如果讀者在閱讀本書時遇到了技術問題,可以登錄瘋狂Java聯盟發帖,筆者將會及時予以解答。本書為所有打算深入掌握iOS編程的讀者而編寫,適合各種層次的iOS學習者和開發者閱讀,也適合作為大學教育、培訓機構的iOS教材。但如果只是想簡單涉獵iOS套用開發,則本書過於龐大,不適合閱讀。

圖書目錄

第1章 iOS套用與開發環境 1
1.1 iOS簡介及其開發語言 2
1.1.1 Swift簡介 2
1.1.2 Objective-C簡介 2
1.1.3 iOS簡介 3
1.2 搭建iOS開發環境 4
1.2.1 下載並安裝Xcode和SDK 4
1.3 第一個Objective-C程式 7
1.3.1 使用文本編輯器開發Objective-C
程式 7
1.3.2 使用Xcode工具開發Objective-C
程式 9
1.4 熟悉Xcode 11
1.4.1 創建iOS項目 11
1.4.2 熟悉導航面板 13
1.4.3 熟悉檢查器面板 16
1.4.4 熟悉庫面板 17
1.4.5 使用Xcode的幫助系統 19
1.5 本章小結 21
第2章 數據類型和運算符 22
2.1 注釋 23
2.2 標識符和變數 24
2.2.1 分隔設定 24
2.2.2 標識符規則 26
2.2.3 Objective-C關鍵字 26
2.3 數據類型分類 26
2.4 基本數據類型 27
2.4.1 整型 27
2.4.2 NSLog輸出函式及格式字元 28
2.4.3 字元型 30
2.4.4 浮點型 31
2.4.5 枚舉型 32
2.4.6 BOOL類型 34
2.5 類型轉換 35
2.5.3 表達式類型的自動提升 37
2.6 運算符 38
2.6.3 位運算符 41
2.6.4 擴展後的賦值運算符 43
2.6.8 三目運算符 46
2.6.9 運算符的結合性和優先權 47
2.7 本章小結 48
第3章 流程控制與數組 49
3.1 順序結構 50
3.2 分支結構 50
3.2.1 if條件語句 50
3.2.2 switch分支語句 54
3.3 循環結構 56
3.3.1 while循環語句 56
3.3.2 do while循環語句 58
3.3.3 for循環 59
3.3.4 嵌套循環 62
3.4 控制循環結構 63
3.4.1 使用break結束循環 63
3.4.2 使用continue結束本次循環 64
3.4.3 使用return結束函式 64
3.5 goto語句 65
3.6 數組 67
3.6.1 定義數組 67
3.6.2 數組的顯式初始化 68
3.6.3 使用數組 69
3.6.4 多維數組 70
3.6.5 多維數組的初始化 71
3.6.6 字元數組、字元串與結束標誌 77
3.6.7 輸出字元串和字元串函式 78
3.6.8 數組的套用舉例 80
3.7 本章小結 81
第4章 C語言特性 82
4.1 函式 83
4.1.1 定義函式 83
4.1.2 函式聲明 86
4.1.3 函式的參數傳遞機制 87
4.1.4 遞歸函式 91
4.1.5 數組作為函式參數 92
4.1.6 內部函式與外部函式 96
4.2 局部變數與全局變數 98
4.2.1 局部變數 98
4.2.2 全局變數 99
4.2.3 外部全局變數與內部全局變數 101
4.2.4 動態存儲與靜態存儲 102
4.3 預處理 105
4.3.1 使用#define、#undef執行
宏定義 105
4.3.2 帶參數的宏定義 107
4.3.3 使用#ifdef、#ifndef、#else、
#endif執行條件編譯 108
4.3.4 使用#if、#elif、#else、#endif
執行條件編譯 110
4.3.5 #include與#import 111
4.4 指針 112
4.4.1 指針的概念 112
4.4.2 指針變數及其基本用法 113
4.4.3 指針變數作為函式參數 115
4.5 指針與數組 117
4.5.1 指向數組的指針變數 117
4.5.2 指針運算 118
4.5.3 數組變數作為函式參數 120
4.5.4 指向多維數組的指針變數 122
4.6 字元串與指針 124
4.6.1 使用字元指針表示字元串 125
4.6.2 字元指針作為函式參數 125
4.7 函式與指針 127
4.7.1 用函式指針變數調用函式 127
4.7.2 用函式指針變數作為函式參數 128
4.7.3 返回指針的函式 129
4.8 指針數組和指向指針變數的指針 131
4.8.1 指針數組與main()函式形參 131
4.8.2 指向指針變數的指針 134
4.9 結構體 134
4.9.1 定義結構體 134
4.9.2 typedef語句 136
4.9.3 初始化結構體變數 138
4.9.4 結構體數組 139
4.10 塊 140
4.10.1 塊的基本語法 140
4.10.2 塊與局部變數 141
4.10.3 直接使用塊作為參數 142
4.10.4 使用typedef定義塊類型 143
4.11 本章小結 144
第5章 面向對象(上) 145
5.1 類和對象 146
5.1.1 定義類 146
5.1.2 對象的產生和使用 150
5.1.3 對象和指針 152
5.1.4 self關鍵字 154
5.1.5 id類型 157
5.2 方法詳解 158
5.2.1 方法的所屬性 158
5.2.2 形參個數可變的方法 159
5.3 成員變數 160
5.3.1 成員變數及其運行機制 160
5.3.2 模擬類變數 163
5.3.3 單例(Singleton)模式 164
5.4 隱藏和封裝 165
5.4.1 理解封裝 165
5.4.2 使用訪問控制符 165
5.4.3 理解@package訪問控制符 169
5.4.4 合成存取方法 170
5.4.5 使用點語法訪問屬性 176
5.5 鍵值編碼(KVC)與鍵值監聽
(KVO) 176
5.5.1 簡單的KVC 177
5.5.2 處理不存在的key 179
5.5.3 處理nil值 181
5.5.4 key路徑 182
5.5.5 鍵值監聽(KVO) 184
5.6 對象初始化 187
5.6.1 為對象分配空間 187
5.6.2 初始化方法與對象初始化 187
5.6.3 便利的初始化方法 189
5.7 類的繼承 191
5.7.1 繼承的特點 191
5.7.2 重寫父類的方法 193
5.7.3 super關鍵字 194
5.8 多態 197
5.8.1 多態性 197
5.8.2 指針變數的強制類型轉換 200
5.8.3 判斷指針變數的實際類型 201
5.9 本章小結 202
第6章 面向對象(下) 203
6.1 Objective-C的包裝類 204
6.1.1 它們不是包裝類 204
6.1.2 NSValue和NSNumber 205
6.2 處理對象 206
6.2.1 列印對象和description方法 206
6.2.2 ==和isEqual:方法 208
6.3 類別與擴展 212
6.3.1 類別(category) 213
6.3.2 利用類別對類進行模組化設計 215
6.3.3 使用類別來調用私有方法 215
6.3.4 擴展(extension) 217
6.4 協定(protocol)與委託 219
6.4.1 規範、協定與接口 219
6.4.2 使用類別實現非正式協定 220
6.4.3 正式協定的定義 221
6.4.4 遵守(實現)協定 222
6.4.5 協定與委託(delegate) 225
6.5 使用@try處理異常 228
6.5.1 使用@try...@catch...@finally
捕獲異常 229
6.5.2 訪問異常信息 231
6.5.3 使用@finally回收資源 232
6.5.4 拋出異常與自定義異常類 233
6.6 Objective-C反射機制 235
6.6.1 獲得Class 235
6.6.2 檢查繼承關係 236
6.6.3 動態調用方法 237
6.7 手動記憶體管理 241
6.7.1 對象的引用計數 242
6.7.2 對象所屬權 245
6.7.3 方法中的保留和釋放 247
6.7.4 使用自動釋放池 248
6.7.5 自動釋放池的銷毀時機與
工作過程 250
6.7.6 臨時對象與事件循環中的
自動釋放池 251
6.7.7 手動記憶體管理的規則總結 252
6.8 自動引用計數 253
6.8.1 自動引用計數概述 253
6.8.2 @autoreleasepool塊 254
6.8.3 使用弱引用解決強引用循環 255
6.9 本章小結 258
第7章 Foundation框架詳解 259
7.1 字元串(NSString與NSMutableString) 260
7.1.1 創建字元串 260
7.1.2 NSString的常用功能 261
7.1.3 可變字元串
(NSMutableString) 262
7.2 日期與時間 263
7.2.1 日期與時間(NSDate) 264
7.2.2 日期格式器
(NSDateFormatter) 265
7.2.3 日曆(NSCalendar)與日期
組件(NSDateComponents) 267
7.2.4 定時器(NSTimer) 268
7.3 對象複製 270
7.3.1 copy與mutableCopy方法 270
7.3.2 NSCopying與
NSMutableCopying協定 271
7.3.3 淺複製與深複製 274
7.3.4 setter方法的複製選項 276
7.4 Objective-C集合概述 277
7.5 數組(NSArray與NSMutableArray) 278
7.5.1 NSArray的功能與用法 278
7.5.2 對集合元素整體調用方法 282
7.5.3 對NSArray進行排序 284
7.5.4 使用枚舉器遍歷NSArray
集合元素 285
7.5.5 快速枚舉(for-in) 286
7.5.6 可變數組(NSMutableArray) 287
7.5.7 NSArray的KVC與KVO 289
7.6 集合(NSSet與NSMutableSet) 290
7.6.1 NSSet的功能與用法 290
7.6.2 NSSet判斷集合元素重複的標準 293
7.6.3 NSMutableSet的功能與用法 295
7.6.4 NSCountedSet的功能與用法 297
7.7 有序集合(NSOrderedSet與NSMutableOrderedSet) 298
7.8 字典(NSDictionary與NSMutableDictionary) 299
7.8.1 NSDictionary的功能與用法 300
7.8.2 對NSDictionary的key排序 303
7.8.3 對NSDictionary的key進行
過濾 305
7.8.4 使用自定義類作為
NSDictionary的key 306
7.8.5 NSMutableDictionary的功能
與用法 307
7.9 謂詞 308
7.9.1 定義謂詞 308
7.9.2 使用謂詞過濾集合 310
7.9.3 在謂詞中使用占位符參數 311
7.9.4 謂詞表達式語法 313
7.10 本章小結 315
第8章 檔案I/O 316
8.1 使用NSData與NSMutableData 317
8.2 使用NSFileManager管理檔案和目錄 318
8.2.1 訪問檔案屬性和內容 319
8.2.2 創建、刪除、移動、複製 320
8.2.3 查看目錄包含的內容 321
8.3 使用NSPathUtilities.h管理路徑 322
8.4 使用NSProcessInfo獲取進程信息 324
8.5 使用NSFileHandle處理檔案IO 326
8.6 使用NSURL讀取網路資源 328
8.7 使用NSBundle處理項目相關資源 329
8.8 對象歸檔 330
8.8.1 使用NSKeyedArchiver歸檔 330
8.8.2 實現NSCoding協定 332
8.8.3 使用NSData完成自定義歸檔 335
8.8.4 使用歸檔實現深複製 337
8.9 本章小結 338
第9章 iOS套用開發入門 339
9.1 從iOS項目開始 340
9.1.1 iOS項目包含的檔案 340
9.1.2 Interface Builder簡介 341
9.1.3 添加控制項 343
9.1.4 修改控制項屬性 344
9.1.5 UIView支持的屬性 346
9.1.6 UILabel支持的屬性 348
9.2 MVC 350
9.2.1 程式入口和應用程式代理 350
9.2.2 理解iOS的MVC 354
9.2.3 掌握UIViewController控制器 355
9.3 事件機制 357
9.3.1 程式獲取控制項的兩種方式 357
9.3.2 事件處理的三種方式 363
9.4 代碼控制UI界面 370
9.4.1 不使用界面設計檔案開發
UI界面 370
實例:無界面設計檔案開發iOS套用 370
9.4.2 使用代碼創建UI界面 373
實例:動態添加、刪除標籤 373
9.4.3 自定義UI控制項 376
實例:跟隨手指運動的小球 376
9.5 美化iOS套用 379
9.5.1 定製iOS套用圖示 379
9.5.2 定製iOS套用的啟動畫面 380
9.6 本章小結 382
第10章 iOS界面編程之基礎控制項 383
10.1 UI控制項概述 384
10.1.1 活動、靜態和被動控制項 384
10.1.2 UIControl基類介紹 384
10.2 按鈕(UIButton) 385
實例:豐富多彩的按鈕 388
10.3 文本框控制項(UITextField) 391
實例:用戶登錄界面 393
10.3.1 完成輸入後關閉鍵盤 395
10.3.2 觸碰背景關閉鍵盤 396
10.4 多行文本控制項(UITextView) 397
10.4.1 UIScrollView支持的屬性 398
10.4.2 使用委託對象處理
UITextView事件 400
實例1:通過導航按鈕關閉虛擬鍵盤 400
實例2:通過自定義鍵盤附屬檔案關閉虛
擬鍵盤 403
10.4.3 自定義選擇內容後的選單 405
10.5 開關按鈕(UISwitch) 407
實例:使用開關控制“手電筒” 408
10.6 分段控制項(UISegmentedControl) 409
實例:通過分段控制項控制背景顏色 410
10.7 圖像控制項(UIImageView) 411
實例1:圖片瀏覽器 412
實例2:“幻燈片”播放器 415
10.8 進度條 416
10.8.1 UIProgressView 416
實例:定製進度條 418
10.8.2 UIActivityIndicatorView 420
10.9 拖動條(UISlider) 422
實例:通過拖動滑塊改變圖片透明度 423
10.10 iOS 9的警告框
(UIAlertController) 424
10.10.1 彈出式警告框 425
10.10.2 帶輸入框的警告框 427
10.11 日期選擇器(UIDatePicker) 429
10.12 選擇器(UIPickerView) 431
10.12.1 單列選擇器 432
10.12.2 多列選擇器 435
10.12.3 相互依賴的多列選擇器 436
10.12.4 自定義選擇器視圖 438
實例:“老虎機”遊戲 439
10.13 iOS 8新增的UIVisualEffectView 442
10.14 微調器(UIStepper) 445
10.15 網頁控制項(UIWebView) 448
實例:迷你瀏覽器 450
10.16 工具條(UIToolBar) 453
實例:自定義工具條控制項 455
10.17 本章小結 457
第11章 高級控制項與特殊視圖控制器 458
11.1 iOS 9新增的UIStackView 459
實例:嵌套UIStackView實現
複雜界面 464
11.2 表格(UITableView)與表格控制器
(UITableViewController) 466
11.2.1 簡單表格 469
11.2.2 處理單元格的選中 473
實例:編輯選中行 473
11.2.3 定製表格行 478
實例1:繼承UITableViewCell
定製表格行 478
實例2:使用動態單元格原型定
制表格行 481
11.2.4 編輯表格 483
11.2.5 多分區表格以及分區索引 488
11.2.6 直接使用
UITableViewController 490
11.2.7 靜態單元格 492
11.2.8 使用UIRefreshController
刷新表格 494
11.3 搜尋條(UISearchBar) 496
11.3.1 使用搜尋條 498
11.3.2 使用UISearchController 500
11.4 導航條(UINavigationBar)與導航
控制器(UINavigationController) 503
11.4.1 使用導航條 503
11.4.2 使用UINavigationController 506
實例:查看、編輯圖書信息 508
11.4.3 使用segue導航 513
11.5 segue詳解 517
11.5.1 使用segue控制過渡 517
11.5.2 Xcode 7新增的
Storyboard Reference 521
11.6 格線(UICollectionView)與格線
控制器(UICollectionViewController) 524
11.6.1 UICollectionView的功能
與用法 526
11.6.2 使用UICollectionViewDelegate- FlowLayout定製布局 531
實例:單元格大小不同的格線 532
11.6.3 擴展UICollectionViewLayout
定製布局 534
實例:環形布局的UICollectionView 535
11.6.4 多分區格線 539
實例:帶頁眉、頁腳的多分區格線 539
11.6.5 直接使用
UICollectionViewController 543
11.7 標籤條(UITabBar)與標籤頁
控制器(UITabBarController) 547
11.7.1 使用UITabBar 547
11.7.2 使用UITabBarController 548
11.7.3 在Storyboard中使用UITabBarController 552
11.8 頁控制項(UIPageControl)與
頁控制器(UIPageViewController) 553
11.8.1 UIPageControl與UIScrollView
結合使用 553
11.8.2 使用UIPageViewController 558
11.9 iPad套用開發 562
11.10 本章小結 571
第12章 管理iOS套用的運行 572
12.1 iOS設備尺寸和自動旋轉機制 573
12.1.1 配置套用支持的方向 573
12.1.2 指定視圖控制器支持的方向 575
12.2 旋轉時重構用戶界面 576
12.3 自動布局 580
12.3.1 自動布局的添加方式 580
12.3.2 使用自動布局適應不同尺寸
的螢幕 585
12.3.3 使用Size Class適應螢幕旋轉 589
12.4 iOS套用的生命周期 594
12.4.1 應用程式的狀態 594
12.4.2 應用程式啟動過程 595
12.4.3 程式入口:main函式 596
12.4.4 回響中斷 597
12.4.5 進入後台 599
12.4.6 返回前台運行 600
12.4.7 應用程式終止 601
12.4.8 Main Run Loop 601
12.5 本章小結 602
第13章 圖形、圖像與動畫 603
13.1 使用UIImage和CGImage處理點陣圖 604
13.1.1 顯示動畫 604
13.1.2 UIImage與CGImage 606
13.2 Quartz 2D繪圖 606
13.2.1 Quartz 2D繪圖基礎:
CGContextRef 607
13.2.2 繪製幾何圖形 610
13.2.3 點線模式 612
13.2.4 繪製文本 616
13.2.5 設定陰影 618
13.2.6 使用路徑 619
實例:繪製任意多角星 623
13.2.7 繪製曲線 624
實例:使用曲線繪製多瓣花朵 626
13.2.8 在記憶體中繪圖 627
實例:繪圖板 630
13.2.9 繪製點陣圖 635
實例:擴展UIImage的功能 635
13.3 圖形變換 640
13.3.1 使用坐標變換 640
13.3.2 坐標變換與路徑結合使用 642
實例:雪花飄飄 642
13.3.3 使用矩陣變換 644
13.4 控制疊加模式 647
13.5 處理填充 652
13.5.1 漸變填充 653
13.5.2 模式填充 658
13.6 動畫 665
13.6.1 Core Animation動畫基礎 665
13.6.2 使用CALayer 666
13.6.3 使用CATransition控制
過渡動畫 669
13.6.4 使用屬性動畫 674
13.6.5 控制移動路徑 679
實例:繞圈遊動的小魚 679
13.7 本章小結 682
第14章 瘋狂連連看 683
14.1 遊戲簡介 684
14.2 開發遊戲界面 685
14.2.1 開發界面布局 685
14.2.2 開發遊戲界面控制項 686
14.2.3 處理方塊之間的連線線 692
14.3 遊戲的狀態數據模型 693
14.3.1 定義數據模型 694
14.3.2 初始化遊戲狀態數據 694
14.4 載入界面的圖片 699
14.5 實現遊戲視圖控制器 701
14.6 實現遊戲邏輯 703
14.6.1 GameService分析與初步實現 703
14.6.2 獲取觸碰點的方塊 704
14.6.3 判斷兩個方塊是否可以相連 706
14.6.4 定義獲取通道的工具方法 707
14.6.5 沒有轉折點的橫向連線 709
14.6.6 沒有轉折點的縱向連線 710
14.6.7 有一個轉折點的連線 711
14.6.8 有兩個轉折點的連線 714
14.6.9 找出最短距離 723
14.7 本章小結 726

相關詞條

熱門詞條

聯絡我們