內容介紹
《20天搞定iPhone軟體開發(適用於iOS 5.0)》一共20講,一天完成1講的學習。本著循序漸進的原則,前面的10講偏重於Cocoa面向對象編程的基本概念以及Objective—C 2.0語言的語法基礎。從第10講以後開始進入iOS軟體開發的實戰階段,每1講的內容都比較充實,其中包含了各種實例代碼,讀者可以在Xcode等開發環境中邊實踐邊學習。讀者完成全書20講的學習後可以達到初級iOS程式設計師的水準。作品目錄
目 錄第1講 配置開發環境.................................................1
1.1 Mac應用程式開發環境 .................................................1
1.2 iPhone應用程式開發環境 ..................................................................2
1.3 查看安裝目錄內容 ........................................................4
1.3.1 啟動Xcode................................................................... 5
1.3.2 啟動Interface Builder .................................................. 6
1.4 Mac中的基本操作 .........................................................6
1.4.1 彈出選單的顯示方法 .................................................. 6
1.4.2 工具條的定製 .............................................................. 8
第2講 應用程式與框架 ...............................................................10
2.1 關於應用程式 ..............................................................10
2.1.1 應用程式的種類 .........................................................11
2.1.2 關於iPhone應用程式 ................................................. 12
2.2 框架 .............................................................................13
2.2.1 簡單的【Hello World】程式 ..................................... 13
2.2.2 框架的出現 ............................................................... 13
2.2.3 程式語言與框架的關係 ............................................. 14
2.3 Mac OS X以及iPhone SDK中的框架 ..............................................14
2.3.1 框架的安裝目錄 ........................................................ 14
2.3.2 Cocoa與Carbon ......................................................... 15
2.3.3 應用程式中使用的框架 ............................................. 16
2.4 Cocoa與Carbon的發展軌跡 .............................................................18
第3講 Cocoa與Objective-C ......................................................20
3.1 框架的使用 .................................................................20
3.1.1 關於API .................................................................... 20
3.1.2 API與程式語言的關係 .............................................. 21
3.2 Objective-C的發展史 ...................................................22
3.3 用於其他語言中的Cocoa API ..........................................................23
3.3.1 通過橋調用Cocoa...................................................... 23
3.3.2 是否應提倡在Objective-C以外的語言中調用Cocoa API的開發方式 .................. 24
3.4 解答與Objective-C相關的幾個疑問 ................................................25
第4講 開發工具 .......................................................27
4.1 Xcode ...........................................................................27
4.1.1 綜合開發環境Xcode的功能 ..................................... 27
4.1.2 工程視窗 ................................................................... 28
4.1.3 文本編輯器的功能 .................................................... 32
4.1.4 開發者手冊 ............................................................... 35
4.2 Interface Builder ...........................................................36
4.3 Dashcode ......................................................................37
4.4 iPhone模擬器 ...............................................................38
4.5 其他工具 .....................................................................38
4.5.1 FileMerge .................................................................. 38
4.5.2 Icon Composer .......................................................... 39
4.5.3 Property List Editor ................................................... 39
4.6 Mac或iPhone應用程式開發的流程 .................................................39
4.6.1 準備應用程式用的材料 ............................................. 39
4.6.2 建立步驟 ................................................................... 41
4.6.3 gcc ........................................................ 42
第5講 Cocoa環境下的面向對象編程 .....................................43
5.1 面向對象的基本概念術語 ...............................................................43
5.1.1 類 ......................................................... 44
5.1.2 實例 ..................................................... 44
5.1.3 實例變數 ................................................................... 44
5.1.4 方法 ..................................................... 45
5.1.5 繼承 ..................................................... 45
5.1.6 相互關係 ................................................................... 46
5.1.7 對象 ..................................................... 46
5.2 在Cocoa實例中理解基本術語 .........................................................47
5.2.1 通過按鈕配置理解基本術語 ..................................... 47
5.2.2 文本輸入框的繼承關係 ............................................. 48
第6講 Hello World應用程式 ......................................................49
6.1 Hello World程式 ...........................................................49
6.2 啟動Xcode創建工程 ....................................................49
6.3 編輯代碼 .....................................................................51
6.4 啟動Interface Builder設計用戶界面 ................................................52
6.4.1 xib檔案................................................. 52
6.4.2 Interface Builder視窗 ................................................ 53
6.4.3 設計Hello World的用戶界面 ..................................... 55
6.5 連線插座與動作 ..........................................................55
6.6 完成Hello World App Delegate的代碼編寫 ....................................................58
6.7 建立與運行 .................................................................59
6.8 開發步驟再回顧 ........................................................61
第7講 MVC構架 ......................................................62
7.1 Hello World應用程式開發流程中包含的信息 ..........................................................62
7.2 什麼是MVC構架 .........................................................62
7.2.1 視圖層 .................................................. 63
7.2.2 模型層 .................................................. 63
7.2.3 控制層 .................................................. 64
7.3 使用MVC構架的實例 .................................................64
7.3.1 iTunes的模型 ............................................................ 64
7.3.2 iTunes的視圖 ............................................................ 65
7.3.3 iTunes的控制 ............................................................ 66
7.4 使用MVC構架的Cocoa應用程式開發特點 ..................................................66
7.4.1 視圖組件由Cocoa提供 .............................................. 66
7.4.2 保持視圖與模型間的相互獨立 ................................. 67
7.4.3 應用程式特有的功能由控制提供 ................................................... 67
7.4.4 只用創建模型以及控制的類 ..................................... 67
第8講 插座與動作 ...................................................68
8.1 視圖與控制間信息交換 ...................................................................68
8.2 插座與動作 .................................................................69
8.2.1 什麼是插座 ............................................................... 69
8.2.2 什麼是動作 ............................................................... 69
8.3 插座與動作的連線 .....................................................70
8.3.1 插座與動作的追加 .................................................... 70
8.3.2 插座的連線 ............................................................... 71
8.3.3 動作的連線 ............................................................... 72
8.3.4 連線確認 ...................................................................73
第9講 Objective-C的語法 ..........................................................75
9.1 Objective-C的編程概論 ....................................................................75
9.1.1 Objective-C與C語言 ................................................. 75
9.1.2 Objective-C程式 ........................................................ 75
9.1.3 類的聲明與實體 ........................................................ 76
9.1.4 創建Objective-C的測試工程 ..................................... 76
9.2 類的聲明 .....................................................................81
9.2.1 導入聲明檔案 ............................................................ 81
9.2.2 類的聲明 ................................................................... 82
9.2.3 實例變數的聲明 ........................................................ 82
9.2.4 實例方法的聲明 ........................................................ 83
9.3 編寫類的實體 ..............................................................87
9.3.1 編寫類的實體 ............................................................ 87
9.3.2 編寫方法代碼 ............................................................ 87
9.3.3 關於方法的聲明 ........................................................ 88
9.4 對象專用變數類型 ......................................................88
9.4.1 實例對象專用的變數類型 ......................................... 88
9.4.2 id類型 .................................................. 89
9.4.3 nil類型 ................................................. 89
9.4.4 在條件表達式中使用對象變數 ................................. 89
9.5 方法調用 .....................................................................90
9.5.1 實例方法的調用 ........................................................ 90
9.5.2 類方法的調用 ............................................................ 91
9.5.3 對象為nil的情況 ....................................................... 92
9.6 命名規則 .....................................................................92
9.6.1 類的命名規則 ............................................................ 92
9.6.2 實例變數的命名規則 ................................................ 93
9.6.3 方法的命名規則 ........................................................ 93
9.7 重新解析Cocoa的Hello World程式..................................................94
9.7.1 HelloWorldAppDelegate.h ......................................... 94
9.7.2 HelloWorldAppDelegate.m ........................................ 95
第10講 記憶體管理 .....................................................98
10.1 記憶體分配與釋放 ........................................................98
10.2 與記憶體相關的問題 ....................................................99
10.2.1 記憶體釋放的時機 .................................................... 99
10.2.2 記憶體泄漏 ............................................................. 100
10.3 使用垃圾收集進行記憶體管理 .......................................................100
10.3.1 垃圾回收 ............................................................. 100
10.3.2 Objective-C與垃圾回收 ...................................... 102
10.3.3 垃圾回收功能有效化 .......................................... 103
10.3.4 垃圾回收編程的規則 .......................................... 103
10.4 由參照統計實現的記憶體管理 .......................................................104
10.4.1 參照統計的基本概念 .......................................... 104
10.4.2 retain、release方法 ............................................. 104
10.4.3 對象保持到釋放的流程 ...................................... 105
10.5 類的實例化 ..............................................................106
10.5.1 類的實例化與初期化 .......................................... 107
10.5.2 自動釋放 ............................................................. 108
10.5.3 創建實例的方法 .................................................. 108
10.5.4 實例的釋放 ......................................................... 109
10.6 記憶體管理的規則 ......................................................110
10.6.1 臨時對象 ..............................................................110
10.6.2 記憶體管理經驗總結 ...............................................111
第11講 字元串 ........................................................113
11.1 字元串專用類 ...........................................................113
11.2 NSString與NSMutableString ........................................................113
11.3 字元編碼 ..................................................................114
11.3.1 什麼是字元編碼 ...................................................114
11.3.2 NSString的字元代碼為Unicode ................................................115
11.3.3 NSStringEncoding ................................................115
11.4 字元串的生成 ...........................................................116
11.4.1 使用【@“”】的形式創建新字元串 ......................................116
11.4.2 創建中文字元串 ...................................................116
11.4.3 使用格式創建字元串 ...........................................118
11.5 NSRange ..................................................................119
11.6 字元串處理 ...............................................................120
11.6.1 計算字元串的長度 .............................................. 120
11.6.2 字元串連線、插入、刪除 ................................... 121
11.6.3 字元串的比較 ..................................................... 124
11.6.4 字元串的檢索 ..................................................... 125
11.6.5 抽取部分字元串 .................................................. 126
11.7 讀寫文本檔案 ...........................................................127
11.7.1 讀取文本檔案 ..................................................... 127
11.7.2 文本檔案輸出 ..................................................... 128
第12講 集合 ............................................................130
12.1 數組 .........................................................................130
12.1.1 NSArray與 NSMutableArray .................................................... 130
12.1.2 數組的創建 ......................................................... 131
12.1.3 數組的長度 ......................................................... 132
12.1.4 通過索引取得對象 .............................................. 132
12.1.5 使用NSEnumerator取得對象 ................................................... 133
12.1.6 使用高速枚舉取得對象 ...................................... 136
12.1.7 對象的追加與刪除 .............................................. 136
12.2 字典 .........................................................................138
12.2.1 什麼是字典類型 .................................................. 138
12.2.2 NSDictionary與 NSMutableDictionary ..................................... 139
12.2.3 NSDictionary的創建 ........................................... 139
12.2.4 鍵與值的取得 ..................................................... 141
12.2.5 鍵與值的追加 ..................................................... 142
12.3 包裝類 .....................................................................143
12.3.1 什麼是包裝類 ..................................................... 143
12.3.2 NSNumber .......................................................... 144
12.4 對象的等價與同值 ..................................................146
12.4.1 擁有相同值的對象 .............................................. 146
12.4.2 等價與同值的判定 .............................................. 146
12.4.3 在集合類中的套用 .............................................. 147
12.5 集合類與參照統計 ..................................................148
12.5.1 NSArray與參照統計 ........................................... 148
12.5.2 NSDictionary與參照統計 .................................... 149
第13講 XML套用 ...................................................150
13.1 XML概要 .................................................................150
13.1.1 什麼是XML ........................................................ 150
13.1.2 一種常用的XML實例——RSS ................................................ 150
13.2 XML的解析 ..............................................................151
13.2.1 解析及解析器 ..................................................... 151
13.2.2 XML解析器的種類 ............................................. 152
13.2.3 樹結構................................................................. 153
13.3 Cocoa的XML解析器 ....................................................................154
13.3.1 NSXMLDocument、NSXMLNode、NSXMLElement .................................. 154
13.3.2 XML文檔的解析器 ............................................. 155
13.3.3 Xpath .................................................................. 157
13.3.4 節點信息 ............................................................. 158
13.3.5 節點的父子關係 .................................................. 159
13.3.6 屬性值的取得 ..................................................... 161
13.4 iPhone 套用軟體中的XML解析實例 ..........................................162
13.4.1 第三方API及實例概要 ........................................ 162
13.4.2 創建並完成RSS檔案解析程式 ................................................. 163
第14講 UIKit框架簡介及iPhone應用程式基礎類 ..................................168
14.1 UIKit概要 ................................................................168
14.1.1 UIKit類列表 ........................................................ 168
14.1.2 iPhone Hello World程式 ...................................... 171
14.1.3 不使用Interface Builder的Hello World程式 ............................. 175
14.1.4 在Xcode 4中創建Hello World程式 ........................................... 180
14.2 畫面構成基礎——UIView ...........................................................184
14.2.1 UIView概要 ........................................................ 184
14.2.2 UIView嵌套 ........................................................ 187
14.3 UIViewController與畫面控制 ......................................................195
14.3.1 使用UIViewController實現簡單的畫面切換 ............................ 195
14.3.2 使用UITabBarController實現並列畫面跳轉 ............................ 200
14.3.3 使用UINavigationController實現多層畫面跳轉 ...................... 204
14.3.4 跳轉到任意畫面 .................................................. 210
14.3.5 模態(modal)畫面的顯示方法 .............................................. 212
第15講 iPhone應用程式中的事件回響 ................................215
15.1 事件回響 .................................................................215
15.1.1 按鈕的觸摸 ......................................................... 215
15.1.2 回響方法的定義 .................................................. 217
15.1.3 滑塊的滑動 ......................................................... 218
15.2 UIResponder .............................................................221
15.2.1 畫面觸摸的檢測 .................................................. 221
15.2.2 標籤觸摸的檢測 .................................................. 222
15.2.3 回響鏈................................................................. 224
15.2.4 觸摸系列最終處理及取消 ................................... 228
15.3 二次觸碰 .................................................................229
15.4 手勢 .........................................................................232
15.4.1 拖動檢測 ............................................................. 232
15.4.2 滑動檢測 ............................................................. 236
15.4.3 快速滑動檢測 ..................................................... 240
15.5 多點觸摸 .................................................................243
15.5.1 檢測多點觸摸 .................................................... 243
15.5.2 檢測雙指滑動 ..................................................... 244
15.5.3 檢測擴大/縮小 .................................................. 246
15.6 振動 .........................................................................249
15.6.1 檢測振動 .............................................................249
第16講 常用UI控制項 ...................................................................252
16.1 標籤(UILabel) .....................................................252
16.1.1 文本與對齊方式的設定 ...................................... 252
16.1.2 標籤顏色與文本顏色的修改 .................................................... 253
16.1.3 改變字型 ............................................................. 254
16.1.4 字型尺寸的自動調整 .......................................... 254
16.1.5 多行字元串 ......................................................... 255
16.1.6 換行與省略 ......................................................... 256
16.1.7 高亮時的文本顏色 .............................................. 256
16.1.8 陰影顯示 ............................................................. 256
16.1.9 繪製方法的定製 .................................................. 258
16.2 按鈕(UIButton) ...................................................259
16.2.1 按鈕的配置與觸摸檢測 ...................................... 259
16.2.2 按鈕的種類 ......................................................... 259
16.2.3 按鈕的狀態及標題變化 ...................................... 260
16.2.4 按鈕觸摸時的陰影反轉 ...................................... 261
16.2.5 按鈕觸摸時的背景閃爍 ...................................... 261
16.2.6 在按鈕中追加圖片 .............................................. 262
16.2.7 設定按鈕背景圖片 .............................................. 263
16.2.8 調整按鈕的邊間距 .............................................. 264
16.2.9 設定標題的換行/省略 ...................................... 265
16.3 文本輸入框(UITextField) ........................................................266
16.3.1 文本輸入框的顯示 .............................................. 266
16.3.2 鍵盤的顯示/隱藏 .............................................. 266
16.3.3 鍵盤的各種設定 .................................................. 267
16.3.4 文本輸入框的框線線 .......................................... 267
16.3.5 文本的橫向與縱向的調整 ................................... 267
16.3.6 文本輸入框的字型及顏色 ................................... 268
16.3.7 提示信息的設定 .................................................. 269
16.3.8 清空按鈕的顯示 .................................................. 269
16.3.9 背景圖片的設定 .................................................. 270
16.3.10 UIView的追加 .................................................... 270
16.3.11 文本輸入框的狀態監視 ...................................... 272
16.4 開關(UISwitch) ...................................................272
16.5 選擇控制項(UISegmentedController) .........................................274
16.5.1 選擇控制項的使用方法 .......................................... 274
16.5.2 選擇控制項的種類 .................................................. 276
16.5.3 不顯示選擇狀態 .................................................. 276
16.5.4 選擇控制項的顏色變更 .......................................... 276
16.5.5 使用圖示的選擇控制項 .......................................... 277
16.5.6 修改選項內容的顯示位置 ................................... 278
16.5.7 設定選項的非活性 .............................................. 278
16.5.8 選項的插入與刪除 .............................................. 278
16.6 滑塊(UISlider) .....................................................280
16.6.1 滑塊的使用方法 .................................................. 280
16.6.2 滑塊值的通知時機 .............................................. 281
16.6.3 向滑塊中追加圖示 .............................................. 281
16.6.4 滑塊的定製 ......................................................... 282
16.7 日期時刻選擇框(UIDatePicker) .............................................284
16.7.1 日期時刻選擇框的使用 ...................................... 284
16.7.2 以動畫形式改變日期 .......................................... 285
16.7.3 設定間隔及最小/最大值 ................................... 285
16.7.4 日期選擇框的種類 .............................................. 286
16.7.5 定製日期選擇框 .................................................. 287
第17講 表格視圖(UITableView) .......................................290
17.1 表格顯示 .................................................................290
17.1.1 最簡單的表格顯示 .............................................. 290
17.1.2 單元選擇時的動作 .............................................. 293
17.1.3 表格的分段顯示 .................................................. 294
17.1.4 表格的分組顯示 .................................................. 297
17.1.5 段腳的顯示 ......................................................... 299
17.1.6 索引的活用 ......................................................... 299
17.2 單元的定製 ..............................................................301
17.2.1 單元尺寸及顏色的修改 ...................................... 301
17.2.2 單元分隔線的修改 .............................................. 302
17.2.3 追加圖片 ............................................................. 303
17.2.4 追加細節標籤 ..................................................... 305
17.2.5 追加附屬檔案 ............................................................. 306
17.2.6 追加自定義附屬檔案 .................................................. 308
17.2.7 追加僅編輯模式時顯示的附屬檔案 ................................................ 309
17.2.8 追加控制項 ..............................................................311
17.2.9 定製單元背景 ..................................................... 315
第18講 使用SQLite資料庫 ......................................................317
18.1 SQLite資料庫及使用SQLite資料庫的前期準備 ................................................317
18.1.1 SQLite資料庫概要 .............................................. 317
18.1.2 使用SQLite資料庫的前期準備 ................................................ 318
18.2 創建資料庫及表格 ..................................................319
18.3 連線資料庫 ..............................................................321
18.4 數據檢索 .................................................................324
18.5 數據的追加與刪除 ..................................................328
18.6 資料庫更新 ..............................................................332
18.7 使用Core Data進行數據的追加、刪除 .......................................335
18.7.1 Core Data的優點 ................................................. 335
18.7.2 創建使用Core Data的應用程式................................................ 336
18.7.3 改造Core Data的數據模型 .................................. 337
18.7.4 修改數據登錄與保持代碼 ................................... 341
18.7.5 數據刪除代碼 ..................................................... 342
18.8 追加編輯數據畫面 ..................................................342
18.9 添加排序項目 ..........................................................345
第19講 調試方法 ...................................................349
19.1 缺陷與調試 ..............................................................349
19.1.1 什麼是缺陷與調試 .............................................. 349
19.1.2 描述缺陷 ............................................................. 350
19.1.3 缺陷的重現 ......................................................... 350
19.2 NSLog ......................................................................351
19.2.1 使用NSlog輸出調試信息 .................................... 351
19.2.2 NSLog的格式 ...................................................... 353
19.3 調試工具 .................................................................354
19.3.1 什麼是調試工具 .................................................. 355
19.3.2 調試構建配置 ..................................................... 355
19.3.3 斷點與調試模式的啟動 ...................................... 356
19.3.4 調試界面 ............................................................. 356
19.3.5 調試的分步執行 .................................................. 358
19.4 例外 .........................................................................359
19.4.1 什麼是例外 ......................................................... 359
19.4.2 捕捉例外 ............................................................. 360
19.4.3 發生例外時停止運行 .......................................... 362
19.4.4 避免使用太多的例外 .......................................... 363
第20講 使用iPhone終端進行測試 .........................................364
20.1 iPhone Developer Program ............................................................364
20.1.1 【iPhone Developer Program】的會員種類 ............................. 364
20.1.2 【iPhone Developer Program】的註冊手續 ............................. 365
20.1.3 關於【Apple ID】 ............................................... 365
20.1.4 【iPhone Developer Program】的付款及認證手續 .................. 366
20.2 在實際iPhone手機上的調試 ........................................................366
索引 ..............................................................................379