簡介 i
本書適閤哪些讀者 i
第二版有哪些更新? i
教學理念 ii
如何使用本書 iii
本書是如何組織的 iii
代碼風格 v
版式說明 vi
開發所需的硬件與軟件 vi
第1章 第一個簡單的iOS應用 1
1.1 創建Xcode項目 2
1.2 創建界麵 5
1.3 模型-視圖-控製器 10
1.4 聲明 13
聲明實例變量 13
聲明方法 14
1.5 創建關聯 15
設置指針 15
設置目標(target)和動作(action) 17
關聯小結 19
1.6 實現方法 20
1.7 針對模擬器構建並運行應用 21
1.8 安裝應用 23
1.9 應用圖標 24
1.10 啓動圖片 27
第2章 Objective-C 31
2.1 對象 31
2.2 使用實例 32
創建對象 32
發送消息 33
釋放對象 34
2.3 編寫命令行工具RandomPossessions 35
NSString 38
NSArray與NSMutableArray 39
2.4 子類化Objective-C類 40
實例變量 44
存取方法 45
實例方法 48
初始化方法 49
其他初始化方法與初始化方法鏈 52
類方法 53
測試子類 55
2.5 異常與控製颱窗口 56
2.6 快速枚舉 57
2.7 練習 58
第3章 內存管理 59
3.1 內存管理基礎 59
C語言的內存管理 59
通過對象管理內存 61
3.2 引用計數 61
使用retain計數 61
使用autorelease 64
存取方法和內存管理 67
實現dealloc 69
通過屬性機製簡化存取方法 70
copy和mutableCopy 72
Retain計數規則 73
3.3 深入學習:再談內存管理 74
第4章 委托機製與Core Location 77
4.1 項目、目標和框架 77
4.2 Core Location 79
通過CLLocationManager獲取更新數據 81
4.3 委托機製 82
協議 83
協議方法 84
委托機製、控製器對象和內存管理 85
4.4 使用調試器 86
4.5 練習:方位 91
4.6 深入學習:構建階段、編譯器錯誤和連接器錯誤 91
預處理(Preprocessing) 92
編譯 93
連接 94
第5章 MapKit與文本輸入 97
5.1 對象圖 97
5.2 MapKit框架 99
5.3 界麵屬性 99
5.4 設置MapView對象的委托對象 102
使用文檔 103
創建MKAnnotation子類 108
標記位置 112
完成Whereami 113
5.5 練習:擴充標注 114
5.6 練習:根據地理位置獲取城市信息 114
第6章 創建UIView子類 115
6.1 創建自定義視圖 116
drawRect:方法 116
創建UIView實例 118
6.2 繪製文字和陰影 120
6.3 使用UIScrollView 121
6.4 實現縮放功能 122
6.5 隱藏狀態條 123
6.6 練習:顔色 125
6.7 深入學習:Retain循環 125
6.8 深入學習:重畫視圖 125
第7章 視圖控製對象 127
7.1 視圖控製對象與XIB文件 127
7.2 使用視圖控製對象 129
創建UITabBarController對象 130
創建視圖控製對象和標簽項 131
為視圖控製對象創建視圖 135
深入淺齣XIB:介紹文件所有者 137
7.3 視圖的顯示和消失 142
7.4 視圖控製對象的生命周期與內存過低警告 142
7.5 UIViewController子類與模闆 146
7.6 練習:地圖標簽 147
第8章 方嚮感應器 149
8.1 設置方嚮感應器 149
8.2 獲取方嚮感應器數據 151
8.3 加速方嚮與加速數值 151
8.4 使用加速感應器數據 151
8.5 使加速感應器數據更“平滑” 152
8.6 偵測搖動 153
8.7 練習:改變顔色 155
8.8 深入學習:濾波與頻率 155
8.9 深入學習:Retina顯示屏 156
第9章 通告機製與設備轉動 159
9.1 通告中心 159
9.2 UIDevice通告 160
9.3 自動轉屏 161
用代碼設置自動縮放掩碼與按位運算符 167
9.4 強製使用橫排模式 169
9.5 練習:設備近身通告 170
深入學習:覆蓋自動轉屏 170
第10章 UITableView與UITableViewController 171
10.1 編寫Homepwner應用 171
10.2 UITableViewController 172
創建UITableViewController子類 173
10.3 UITableView數據源 176
PossessionStore:單實例對象 177
實現數據源方法 180
10.4 UITableViewCell對象 182
創建並獲取UITableViewCell對象 183
重用UITableViewCell對象 185
10.5 代碼片段庫 186
10.6 練習:錶格段 189
第11章 編輯UITableView 191
11.1 編輯模式 191
11.2 增加行 197
11.3 刪除行 198
11.4 移動行 199
第12章 UINavigationController 203
12.1 UINavigationController 204
UINavigationBar 207
12.2 加入額外的UIViewController 211
12.3 UINavigationController的導航功能 217
將視圖控製對象壓入棧 217
視圖控製對象之間的數據傳遞 219
視圖的顯示和消失 221
12.4 練習:數字鍵盤(Number Pad) 221
第13章 相機 223
13.1 通過UIImageView顯示圖片 223
通過UIImagePickerController拍攝照片 226
ImageStore 231
NSDictionary 232
創建並使用鍵 234
隱藏鍵盤 237
13.2 練習:刪除圖片 238
13.2 深入:攝像 238
第14章 UIPopoverController與模態視圖控製對象 241
14.1 將Homepwner改寫為通用應用 242
14.2 UIPopoverController 244
14.3 模態視圖控製對象 246
關閉模態視圖控製對象 249
模式視圖控製對象的樣式 250
編寫視圖控製對象的委托協議 252
模態視圖控製對象的過渡動畫 254
第15章 保存、讀取與多任務處理 257
15.1 應用沙盒 257
獲取文件路徑 258
15.2 固化 260
對象的固化 260
對象的解固 262
15.3 應用狀態、狀態切換與多任務處理 265
15.4 通過NSData保存數據 269
15.5 再談內存過低警告 271
15.6 “模型-視圖-控製器-存儲”設計模式 272
15.7 練習:為Whereami增加固化功能 272
15.8 深入:應用狀態的切換 272
15.9 深入:文件係統的讀取和寫入 273
15.10 深入:程序包 276
第16章 創建UITableViewCell子類 279
16.1 創建HomepwnerItemCell 280
創建子視圖 281
子視圖的布局 282
使用UITableViewCell子類對象 283
16.2 處理圖片 284
16.3 練習:輔助指示視圖 289
16.4 練習:縮小原圖 289
第17章 Core Data 291
17.1 對象-關係映射 291
17.2 用Core Data重寫PossessionStore的數據保存功能 291
模型文件 292
NSManagedObject與NSManagedObject子類 297
更新PossessionStore 301
為Homepwner增加AssetType功能 307
17.3 再談SQL 311
17.4 各種保存機製的優缺點 314
17.5 練習:增加AssetType對象 315
17.6 練習:AssetType對象的iPad界麵 315
第18章 本地化 317
18.1 通過NSLocale實現國際化 318
18.2 資源的本地化 319
18.3 NSLocalizedString與字符串對照錶 322
18.4 練習:增加一套本地化資源 325
18.5 深入:NSBundle在國際化中的作用 325
第19章 設置 327
19.1 更新Whereami 327
19.2 NSUserDefaults 329
19.3 深入:“設置”應用 331
第20章 觸摸事件與UIResponder 333
20.1 觸摸事件 334
20.2 創建TouchTracker應用 335
20.3 處理觸摸事件並創建綫條對象 337
20.4 響應對象鏈 340
20.5 練習:保存和讀取 341
20.6 練習:圓圈 341
20.7 深入學習:UIControl 341
第21章 Instruments 343
21.1 靜態分析器 343
21.2 Instruments 345
21.3 Allocations組件 345
Allocations組件的設置選項 350
內存堆快照分析 352
Time Profiler組件 353
21.3 Xcode方案 355
創建新方案 357
21.4 構建設置 359
第22章 Core Animation Layer 363
22.1 層與視圖的關係 363
22.2 創建CALayer對象 364
22.3 層的顯示內容 367
22.4 隱式可動畫屬性 369
22.5 深入:通過代碼生成顯示內容 371
22.6 深入:層、位圖與上下文 372
22.7 練習:動態生成層的顯示內容 374
第23章 通過CAAnimation控製動畫 375
23.1 動畫對象 375
23.2 通過CABasicAnimation實現鏇轉動畫 378
速度控製函數 381
動畫結束後的處理 382
23.3 通過CAKeyframeAnimation實現彈跳動畫 383
23.4 練習:更多動畫效果 384
23.5 深入:外觀層和模型層 384
第24章 Block對象與範疇 387
24.1 為TouchDrawView上色 387
24.2 Block對象 389
Block對象與變量 389
捕獲變量 393
通過其他內建的方法使用Block對象 396
通過Block對象保持代碼的短小精練 396
24.3 範疇 397
24.4 深入學習:內存管理與Block對象 400
24.5 深入學習:比較多種迴調機製實現途徑的優缺點 403
第15章 Web服務與UIWebView 405
25.1 Web服務 406
編寫Nerdfeed 407
從指定的URL獲取數據 408
使用NSURLConnection 410
解析XML數據 412
日誌輸齣技巧 423
25.2 UIWebView 424
25.3 深入學習:NSXMLParser 426
25.4 深入學習:HTTP請求主體 427
25.5 深入學習:認證信息 429
25.6 練習:解析並顯示更多數據 430
25.7 練習:加強UIWebView 430
第26章 UISplitViewController 431
26.1 在Nerdfeed中使用UISplitViewController 432
26.2 主、從視圖控製對象間的通信 436
26.3 在竪排模式下顯示主視圖控製對象 442
26.4 將Nerdfeed改寫為通用應用 445
第27章 多媒體播放與後颱運行 449
27.1 創建MediaPlayer應用 449
27.2 係統聲音 452
注冊係統聲音 452
播放係統聲音 453
27.3 播放壓縮格式的音頻文件 454
27.4 播放視頻文件 455
MPMoviePlayerViewController 457
視頻文件的預讀 458
27.5 後颱運行 458
後颱運行規則 459
其他形式的後颱運行 460
27.6 底層API 462
27.7 練習:錄音 462
第15章 Bonjour與Web服務端 463
28.1 Bonjour 463
創建CocoaServer 464
發布Bonjour服務 467
通過Bonjour查找服務 469
28.2 HTTP通信 473
用Objective-C編寫Web服務端 473
獲取服務端的網絡地址信息 474
字節序 475
創建服務請求 475
接收Web請求 477
28.3 深入學習:TXTRecords 479
第29章 推送通知與網絡編程 481
29.1 設置客戶端,為接收推送通知做準備 482
注冊客戶端 482
創建並設置針對推送通知的provisioning profile 483
29.2 投遞推送通知 486
嚮provider發送設備token 486
29.3 發送推送通知 488
通過NSStream和Apple服務器創建網絡連接 488
通過NSStream建立網絡連接 489
為Apple服務器提供數據 493
處理投遞錯誤 497
再談針對流連接的數據讀取 498
29.4 幾種額外的客戶端通知處理機製 498
聲音和圖標標記 499
通過推送通知傳送自定義數據 500
29.5 正式的通知服務器以及其他發布事宜 502
29.6 深入學習:反饋服務 502
第30章 後記 503
30.1 接下來做什麼 503
30.2 結束語 503
索引 505
· · · · · · (
收起)