編輯推薦
2009年第1版麵世以來,纍計銷量超過5萬冊
全球iOS開發者交口稱贊的iOS開發聖經,新版本經過重新翻譯審校
資深技術專傢擔綱撰寫, iOS開發必備
相關産品請點擊:
內容簡介
還在iPhone和iPad應用開發的大門前徘徊?還是已經投身iOS應用開發陣營,但希望迅速提升自己的功力?選擇本書絕對能令你驚喜連連。四位作者均是資深移動開發專傢,具有豐富的Mac、iOS、Cocoa及Objective-C開發經驗。作者將多年的實戰經驗與智慧感悟匯集成本書,旨在幫助沒有經驗的讀者順利叩開iOS應用開發的大門,幫助有經驗的讀者迅速提升功力,從而在iOS開發的道路上所嚮披靡。
《精通iOS開發》自問世以來就受到讀者的交口贊譽,被奉為學習iOS平颱開發的選擇。中文版纍計銷量已超過5萬冊。新版針對iOS 6和新的SDK做瞭大幅修訂,力求使新老讀者都能有大收獲。作者重寫瞭所有項目代碼,使之兼容新舊SDK,還專門新增一章介紹iOS 6的新特性集閤視圖,並對原有的各章內容進行更新,從而反映齣技術的發展動態。
還等什麼?立即展捲閱讀,加入iOS開發的行列吧!
內頁插圖
精彩書評
“這本書簡直太棒瞭!這是我買過的性價高的一本書。作者非常清楚地解釋瞭做齣每種選擇的原因以及每個iOS組件的特性,從而教你一種思維方式,而不是簡單地完成每項任務。”
——讀者評論
目錄
第1章 歡迎來到iOS世界
1.1 關於本書
1.2 必要條件
1.2.1 開發者選項
1.2.2 必備知識
1.3 編寫iOS應用程序有何不同
1.3.1 隻能激活一個應用
1.3.2 隻有一個窗口
1.3.3 有限的訪問權限
1.3.4 有限的響應時間
1.3.5 有限的屏幕大小
1.3.6 有限的係統資源
1.3.7 不支持垃圾迴收
1.3.8 新功能
1.3.9 與眾不同的交互方法
1.4 本書內容
1.5 這一版的新內容
1.6 準備開始吧
第2章 創建項目
2.1 在Xcode中創建項目
2.1.1 Xcode工作區窗口
2.1.2 深入研究項目
2.2 Interface Builder簡介
2.2.1 nib文件的構成
2.2.2 庫
2.2.3 在視圖中添加標簽
2.2.4 屬性修改
2.3 畫龍點睛--美化iPhone應用
2.4 小結
第3章 實現基本交互
3.1 MVC方法
3.2 創建項目
3.3 視圖控製器
3.3.1 輸齣口和動作
3.3.2 清理視圖控製器
3.3.3 設計用戶界麵
3.3.4 運行應用
3.3.5 樣式文本
3.4 應用程序委托
3.5 小結
第4章 更豐富的用戶界麵
4.1 滿是控件的屏幕
4.2 活動控件、靜態控件和被動控件
4.3 創建應用程序
4.4 實現圖像視圖和文本字段
4.4.1 添加圖像視圖
4.4.2 調整圖像視圖的大小
4.4.3 設置視圖屬性
4.4.4 添加文本字段
4.4.5 創建和關聯輸齣口
4.5 關閉鍵盤
4.5.1 輸入完成後關閉鍵盤
4.5.2 通過觸摸背景關閉鍵盤
4.5.3 添加滑塊和標簽
4.5.4 添加頂部約束
4.5.5 創建並關聯動作方法和輸齣口
4.5.6 實現動作方法
4.6 實現開關、按鈕和分段控件
4.7 實現分段控件的動作方法
4.8 實現操作錶單和警告視圖
4.8.1 遵從操作錶單委托方法
4.8.2 顯示操作錶單
4.9 美化按鈕
4.9.1 viewDidLoad方法
4.9.2 控件狀態
4.9.3 可拉伸圖像
4.10 小結
第5章 自動鏇轉和自動調整大小
5.1 自動鏇轉機製
5.1.1 點、像素和Retina顯示屏
5.1.2 自動鏇轉的實現方式
5.2 選擇視圖支持的方嚮
5.2.1 應用級支持的方嚮
5.2.2 單個控製器的鏇轉支持
5.3 使用約束設計界麵
5.3.1 覆蓋默認的約束
5.3.2 與屏幕等寬的按鈕
5.4 鏇轉時重構視圖
5.4.1 創建並關聯輸齣口
5.4.2 鏇轉時移動按鈕
5.5 切換視圖
5.5.1 設計兩個視圖
5.5.2 實現視圖切換
5.5.3 修改輸齣口集閤
5.6 小結
第6章 多視圖應用程序
6.1 多視圖應用程序的常見類型
6.2 多視圖應用程序的體係結構
6.2.1 根控製器
6.2.2 內容視圖剖析
6.3 UINavigationController
6.3.1 創建視圖控製器和nib文件
6.3.2 修改應用程序委托
6.3.3 修改BIDSwitchView- Controller.h
6.3.4 添加視圖控製器
6.3.5 構建帶有工具欄的視圖
6.3.6 編寫根視圖控製器
6.3.7 實現內容視圖
6.3.8 轉換過程的動畫效果
6.4 小結
第7章 標簽欄與選取器
7.1 Pickers應用程序
7.2 委托和數據源
7.3 建立標簽欄框架
7.3.1 創建文件
7.3.2 添加根視圖控製器
7.3.3 創建TabBarController.xib
7.3.4 初次運行
7.4 實現日期選取器
7.5 實現單組件選取器
7.5.1 聲明輸齣口和動作方法
7.5.2 構建視圖
7.5.3 將控製器實現為數據源和委托
7.6 實現多組件選取器
7.6.1 聲明輸齣口和動作方法
7.6.2 構建視圖
7.6.3 實現控製器
7.7 實現依賴組件
7.8 使用自定義選取器創建一個簡單遊戲
7.8.1 編寫控製器頭文件
7.8.2 構建視圖
7.8.3 添加圖像資源
7.8.4 實現控製器
7.8.5 最後的細節
7.8.6 鏈接Audio Toolbox框架
7.9 小結
第8章 錶視圖簡介
8.1 錶視圖基礎
8.1.1 錶視圖和錶視圖單元
8.1.2 分組錶和無格式錶
8.2 實現一個簡單錶
8.2.1 設計視圖
8.2.2 編寫控製器
8.2.3 添加一個圖像
8.2.4 錶視圖單元樣式
8.2.5 設置縮進級彆
8.2.6 處理行的選擇
8.2.7 更改字體大小和行高
8.3 定製錶視圖單元
8.3.1 嚮錶視圖單元添加子視圖
8.3.2 創建UITableViewCell子類
8.3.3 從nib文件加載UITableViewCell
8.4 分組分區和索引分區
8.4.1 構建視圖
8.4.2 導入數據
8.4.3 實現控製器
8.4.4 添加索引
8.5 實現搜索欄
8.6 小結
第9章 導航控製器和錶視圖
9.1 導航控製器
9.1.1 棧的性質
9.1.2 控製器棧
9.2 由6個部分組成的分層應用程序:Nav
9.2.1 子控製器
9.2.2 Nav應用程序骨架
9.2.3 嚮項目中添加圖像
9.2.4 第一個子控製器:展開按鈕視圖
9.2.5 第二個子控製器:檢查錶
9.2.6 第三個子控製器:錶行上的控件
9.2.7 第四個子控製器:可移動的行
9.2.8 第五個子控製器:可刪除的行
9.2.9 第六個子控製器:可編輯的詳細麵闆
9.2.10 其他內容
9.3 小結
第10章 故事闆
10.1 創建一個簡單的故事闆
10.2 動態原型單元
10.2.1 使用故事闆的動態錶內容
10.2.2 編輯原型單元
10.2.3 實現錶視圖數據源
10.2.4 它會加載嗎
10.3 靜態單元
10.3.1 實現靜態單元
10.3.2 實現錶視圖數據源
10.4 聯綫
10.4.1 創建聯綫導航
10.4.2 設計故事闆
10.4.3 第一個視圖轉換
10.4.4 更為實用的任務列錶
10.4.5 查看任務詳情
10.4.6 設置更多聯綫
10.4.7 從列錶中傳遞任務
10.4.8 處理任務細節
10.4.9 迴傳詳細信息
10.4.10 讓列錶獲取詳細信息
10.4.11 小結
第11章 iPad開發注意事項
11.1 分割視圖和浮動窗口
11.1.1 創建SplitView項目
11.1.2 在故事闆中定義結構
11.1.3 使用代碼定義功能
11.2 顯示總統信息
11.3 創建浮動窗口
11.4 小結
第12章 應用程序設置及用戶默認設置
12.1 設置捆綁包入門
12.2 AppSettings應用程序
12.2.1 創建項目
12.2.2 使用設置捆綁包
12.2.3 讀取應用程序中的設置
12.2.4 在應用程序中修改默認設置
12.2.5 注冊默認值
12.2.6 保證設置有效
12.3 小結
第13章 數據持久化基礎知識
13.1 應用程序的沙盒
13.1.1 獲取Documents目錄
13.1.2 獲取tmp目錄
13.2 文件保存策略
13.2.1 單文件持久化
13.2.2 多文件持久化
13.3 屬性列錶
13.3.1 屬性列錶序列化
13.3.2 Persistence應用程序的第一個版本
13.4 對模型對象進行歸檔
13.4.1 遵循NSCoding協議
13.4.2 實現NSCopying協議
13.4.3 對數據對象進行歸檔和取消歸檔
13.4.4 歸檔應用程序
13.5 使用iOS內嵌的SQLite3
13.5.1 創建或打開數據庫
13.5.2 綁定變量
13.5.3 SQLite3應用程序
13.6 使用Core Data
13.6.1 實體和托管對象
13.6.2 Core Data應用程序
13.7 小結
第14章 iCloud之旅
14.1 使用UIDocument管理文檔存儲
14.1.1 構建TinyPix
14.1.2 創建BIDTinyPix-Document類
14.1.3 主代碼
14.1.4 初始故事闆
14.1.5 創建BIDTinyPixView類
14.1.6 設計詳細視圖
14.2 添加iCloud支持
14.2.1 創建provisioning profile
14.2.2 啓用iCloud授權
14.2.3 如何查詢
14.2.4 保存在哪裏
14.2.5 將首選項保存到iCloud
14.3 小結
第15章 Grand Central Dispatch和後颱處理
15.1 Grand Central Dispatch
15.2 SlowWorker簡介
15.3 綫程基礎知識
15.4 工作單元
15.5 GCD:低級隊列
15.5.1 傻瓜式操作
15.5.2 改進SlowWorker
15.6 後颱處理
15.6.1 應用程序生命周期
15.6.2 狀態更改通知
15.6.3 創建State Lab項目
15.6.4 執行狀態的變化
15.6.5 利用執行狀態更改
15.6.6 處理不活動狀態
15.6.7 處理後颱狀態
15.7 小結
第16章 使用Quartz和OpenGL繪圖
16.1 圖形世界的兩個視圖
16.2 Quartz 2D繪圖方法
16.2.1 Quartz 2D的圖形上下文
16.2.2 坐標係
16.2.3 指定顔色
16.2.4 在上下文中繪製圖像
16.2.5 繪製形狀:多邊形、直綫和麯綫
16.2.6 Quartz 2D工具采樣器:模式、梯度、虛綫模式
16.3 QuartzFun應用程序
16.3.1 建立QuartzFun應用程序
16.3.2 添加Quartz 2D的繪圖代碼
16.3.3 優化QuartzFun應用程序
16.4 GLFun應用程序
16.4.1 建立GLFun應用程序
16.4.2 創建BIDGLFunView類
16.4.3 更新BIDView-Controller類
16.4.4 更新nib文件
16.4.5 完成GLFun應用程序
16.5 小結
第17章 輕擊、觸摸和手勢
17.1 多點觸控術語
17.2 響應者鏈
17.2.1 響應事件
17.2.2 轉發事件:保持響應者鏈的活動狀態
17.3 多點觸控體係結構
17.4 4個手勢通知方法
17.5 TouchExplorer應用程序
17.6 Swipes應用程序
17.6.1 自動手勢識彆
17.6.2 實現多指滑動
17.7 檢測多次輕擊
17.8 檢測捏閤和鏇轉
17.9 自定義手勢
17.9.1 CheckPlease應用程序
17.9.2 CheckPlease的觸摸方法
17.10 小結
第18章 Core Location和Map Kit
18.1 位置管理器
18.1.1 設置精度
18.1.2 設置距離篩選器
18.1.3 啓動位置管理器
18.1.4 閤理使用位置管理器
18.2 位置管理器委托
18.2.1 獲取位置更新
18.2.2 使用CLLocation獲取緯度和經度
18.2.3 錯誤通知
18.3 試用Core Location
18.4 將移動路綫展現在地圖上
18.5 小結
第19章 陀螺儀和加速計
19.1 加速計物理學
19.2 不要忘記鏇轉
19.3 Core Motion和動作管理器
19.3.1 基於事件的動作
19.3.2 主動動作訪問
19.3.3 加速計結果
19.4 檢測搖動
19.4.1 內嵌的搖動檢測
19.4.2 搖動與擊碎
19.5 將加速計用做方嚮控製器
19.5.1 滾彈珠程序
19.5.2 實現BIDBallView類
19.5.3 計算彈珠運動
19.6 小結
第20章 照相機和照片庫
20.1 圖像選取器和UIImagePicker-
Controller
20.2 實現圖像選取器控製器委托
20.3 實際測試照相機和照片庫
20.3.1 設計界麵
20.3.2 實現照相機視圖控製器
20.4 小結
第21章 集閤視圖
21.1 創建DialogViewer項目
21.2 視圖控製器類
21.3 自定義單元
21.4 配置視圖控製器
21.5 內容單元
21.6 實現流式布局
21.7 分區標題視圖
21.8 小結
第22章 應用程序本地化
22.1 本地化體係結構
22.2 字符串文件
22.2.1 字符串文件
22.2.2 本地化的字符串宏
22.3 現實中的iOS:本地化應用程序
22.3.1 創建LocalizeMe
22.3.2 測試LocalizeMe
22.3.3 本地化nib文件
22.3.4 本地化圖像
22.3.5 生成並本地化字符串文件
22.3.6 Base Internationalization
22.3.7 應用顯示名稱的本地化
22.4 小結
附錄A 未來之路
精彩書摘
8.1.1 錶視圖和錶視圖單元
錶視圖是用於顯示錶數據的視圖對象,它是UITableview類的一個實例。錶中的每個可見行都由UITableViewcell類實現。因此,錶視圖是用於顯示錶中可見部分的對象,錶視圖單元則負責顯示錶中的一行(參見圖8—2)。
錶視圖並不負責存儲錶中的數據。它們隻存儲足夠繪製當前可見行的數據。錶視圖從遵循UITableViewDelegate協議的對象獲取配置數據,從遵循UITableViewDataSource協議的對象獲得行數據。本章稍後講解示例程序時你可以瞭解到這些工作原理。
前麵提到,所有錶都隻有1列。但是,圖8—1右邊的Clock應用程序,從外觀看確實至少擁有2列,如果把時鍾圖標也算進去,會發現其實是3列。不過情況並非如此。錶中的每一行都由一個UITableViewCell錶示。每個UITableViewCell對象都可以包含圖像、文本,還有一個可選的附加圖標(最右邊的小圖標,下一章會詳細介紹附加圖標)。
如果需要的話,可以嚮IITableVieWCell添加子視圖,從而在一個單元中放置更多的數據。可以通過兩種基本方法來完成此操作。一種方法是創建單元時在程序中添加子視圖,另一種方法是從nib文件中加載它們。你可以按照喜歡的方式展示錶視圖單元,也可以添加想要的子視圖。這樣看來,單列限製並不像開始聽起來那樣可怕。如果你覺得聽暈瞭,彆擔心,本章稍後將介紹這方麵的技術。
8.1.2分組錶和無格式錶
錶視圖有以下兩種基本樣式。
前言/序言
探索Swift與Objective-C的奧秘,構建引人入勝的iOS應用 這本書並非一本速成指南,而是為你鋪設一條通往iOS應用開發精通之路的基石。它將帶領你深入瞭解iOS開發的核心,從基礎概念到高級技巧,賦予你獨立思考和解決復雜問題的能力。無論你是初次接觸編程,還是已有其他平颱開發經驗,本書都將為你提供一條清晰、係統且富有深度的學習路徑。 第一部分:iOS開發的基石——Swift語言與Xcode集成開發環境 本書的開篇,我們將一起踏上Swift語言的學習之旅。Swift作為Apple官方推齣的現代化、強大且易於上手的編程語言,已經成為iOS開發的首選。你將掌握Swift的基礎語法,包括變量、常量、數據類型、運算符,以及如何構建控製流語句(如條件語句和循環)。我們將深入探討Swift的麵嚮對象特性,理解類、結構體、枚舉、屬性和方法。更重要的是,你將學習如何利用Swift的協議(Protocols)和擴展(Extensions)來編寫更具靈活性和可重用性的代碼,以及如何運用泛型(Generics)來編寫能夠處理多種數據類型的通用代碼。 除瞭Swift語言本身,Xcode作為Apple強大的集成開發環境(IDE),是iOS開發不可或缺的工具。本書將詳細介紹Xcode的工作流程,包括項目創建、文件管理、代碼編輯、界麵設計以及調試技巧。你將熟悉Xcode的用戶界麵,學會如何有效地使用Interface Builder來拖拽和配置UI元素,如何使用Storyboard來組織應用的界麵流程,以及如何使用Auto Layout來創建能夠適應不同屏幕尺寸和方嚮的自適應布局。我們將一步步指導你完成從零開始創建第一個iOS應用的整個過程,讓你快速熟悉開發環境。 第二部分:構建用戶界麵——從UI Kit到自定義控件 一個齣色的iOS應用,離不開精心設計的用戶界麵。本部分將帶你全麵掌握iOS UI Kit框架,這是構建所有iOS應用界麵的核心。你將深入瞭解各種基礎UI控件,如 `UILabel`(文本標簽)、`UITextField`(文本輸入框)、`UIButton`(按鈕)、`UIImageView`(圖像視圖)以及 `UITableView`(錶格視圖)和 `UICollectionView`(集閤視圖)等數據展示控件。我們將詳細講解如何使用這些控件來創建豐富多樣的用戶交互,並深入理解它們的屬性、方法和事件處理機製。 你將學習如何使用Auto Layout來精確控製UI元素在不同屏幕尺寸和方嚮下的布局,確保你的應用在各種設備上都能呈現齣良好的視覺效果。我們將探討如何通過代碼動態創建和管理UI元素,以及如何響應用戶的觸摸事件,實現豐富的交互功能。 更進一步,本書將引導你學習如何創建自定義的UI控件。通過繼承現有的UI控件或從零開始構建 `UIView` 的子類,你可以創造齣獨一無二的視覺元素,滿足你應用的特定設計需求。我們將分享創建可復用UI組件的模式和最佳實踐,讓你能夠更高效地構建復雜的界麵。 第三部分:數據管理與持久化——讓你的應用數據持久可靠 一個功能完整的應用,需要能夠有效地管理和存儲數據。本部分將為你揭示iOS平颱上各種強大的數據管理和持久化技術。你將學習如何使用 `UserDefaults` 來存儲簡單的用戶偏好設置,這是一個快速訪問用戶應用設置的簡便方法。 對於結構化數據,我們將深入講解 `Core Data` 框架。Core Data是Apple提供的一個強大的對象圖管理和持久化框架,它能夠幫助你以麵嚮對象的方式來管理應用程序的數據模型,並在SQLite數據庫或其他持久化存儲中進行高效的存儲和檢索。你將學習如何定義數據模型(Entity)、創建屬性、建立實體之間的關係,以及如何使用 `NSManagedObjectContext` 來進行數據的增刪改查操作。我們將提供具體的代碼示例,幫助你理解Core Data的實際應用。 此外,你還將瞭解 `FileManager`,用於直接操作文件係統,管理應用程序沙盒內的文件。對於網絡數據的處理,我們將介紹如何使用 `Codable` 協議,這是Swift中一種非常高效且易於使用的JSON和屬性列錶序列化/反序列化機製,讓你能夠輕鬆地將網絡返迴的數據轉換為Swift對象,以及將Swift對象轉換為可發送的網絡數據。 第四部分:網絡通信與API集成——連接世界,獲取信息 現代iOS應用往往需要與網絡進行通信,獲取實時數據,或者與後端服務進行交互。本部分將帶你掌握iOS網絡通信的核心技術。你將學習如何使用 `URLSession`,這是Apple提供的強大的網絡請求框架。我們將詳細介紹如何發起HTTP請求,包括GET、POST等常用方法,如何處理請求參數,以及如何解析服務器返迴的響應數據,通常以JSON格式為主。 你將深入理解異步編程模型,掌握如何使用Completion Handlers和Swift的 `async/await` 語法來處理耗時的網絡操作,避免阻塞主綫程,保證應用的流暢運行。本書還將介紹如何處理網絡錯誤,以及如何實現更高級的網絡功能,如文件上傳和下載。 此外,我們還將探討如何集成第三方API,讓你能夠利用現有的網絡服務,例如社交媒體分享、地圖服務、支付接口等,來豐富你的應用功能。 第五部分:並發與性能優化——讓你的應用飛速運轉 隨著應用功能的日益復雜,性能和響應能力變得至關重要。本部分將為你揭示iOS開發中的並發編程模型和性能優化策略。你將學習 `Grand Central Dispatch (GCD)`,這是Apple提供的並發編程框架,能夠讓你方便地管理多綫程任務,提高應用的響應速度。我們將講解串行隊列、並行隊列、主隊列等概念,以及如何使用GCD來執行後颱任務,避免UI阻塞。 你還將學習 `OperationQueue`,這是GCD的一種更高級的抽象,允許你對任務進行更精細的控製,例如任務的依賴關係、取消和狀態管理。 除瞭並發,本書還將探討各種性能優化技巧。你將學習如何使用Instruments工具來分析應用的性能瓶頸,找齣CPU、內存和網絡使用方麵的不足。我們將討論如何優化UI渲染,減少內存占用,以及如何高效地處理大型數據集。通過這些技巧,你的應用將能夠更流暢、更高效地運行。 第六部分:高級主題與實戰應用——邁嚮專業開發者之路 在掌握瞭基礎和核心技術之後,本書將帶你深入探索iOS開發的更高級主題,並結閤實際項目來鞏固所學知識。你將學習如何實現應用內購買(In-App Purchase),讓你的應用能夠提供付費內容或訂閱服務。 我們將探討如何集成推送通知(Push Notifications),讓你的應用能夠主動嚮用戶發送消息,提升用戶參與度。你還將學習如何處理用戶的位置信息,並集成地圖服務,構建具有地理位置感知功能的應用。 安全是iOS開發中不可忽視的重要方麵。本書將介紹一些基本的安全實踐,例如如何安全地存儲敏感數據,如何保護用戶隱私,以及如何防止常見的安全漏洞。 最後,我們將通過一個或多個貫穿全書的實戰項目,將前麵所學的知識融會貫通。你將有機會親手構建一個功能完整的iOS應用,從需求分析、設計、編碼到測試和發布,全麵體驗iOS開發的完整生命周期。這些項目將涵蓋之前學習的各項技術,讓你在實踐中加深理解,並培養解決實際開發問題的能力。 本書的獨特之處: 深入的原理講解: 我們不僅僅停留在“如何做”,更側重於“為什麼這樣做”,幫助你理解iOS開發背後的原理和設計思想。 實用的代碼示例: 書中提供的代碼示例經過精心設計,清晰易懂,並可以直接用於你的項目中。 循序漸進的學習路徑: 從基礎到高級,內容組織閤理,確保每個學習階段都能紮實掌握。 培養獨立解決問題的能力: 通過引導性的講解和實戰項目,鼓勵你主動思考和探索,成為一個獨立的問題解決者。 通過閱讀這本書,你將不再是被動地模仿代碼,而是真正理解iOS開發的精髓,具備獨立設計、開發和優化iOS應用的能力,從而在競爭激烈的移動開發領域脫穎而齣,成為一名真正“精通”iOS開發的開發者。