本書適合 iOS 開發零基礎的讀者閱讀。全書包含六大部分,共24章,涵蓋了針對 iOS 開發入門所需要掌握的核
心內容,同時緊扣 iOS 開發的*發展趨勢,以 Objective-C 語言為基礎,并引入了 Swift 語言以及 React Native 的介
紹。通過本書的系統學習,能夠滿足一般軟件公司對 iOS 開發工程師的崗位要求。
*部分:Objective-C 語言基礎。針對初學者介紹iOS開發使用*廣泛、成熟度*的 Objective-C 語言,簡單扼
要地介紹了在實際開發中*常使用的語法內容。第二部分:iOS 開發入門。基于UIKit框架,介紹了iOS開發中需要優
先掌握的基礎類,包括基礎 UI 控件、高級 UI 控件、控制器、手勢等。第三部分:iOS 開發進階。著重介紹多線程、
網絡、存儲、繪圖、設計模式、設備、地圖、推送、證書以及應用發布等進階技術。第四部分:常用框架以及輔助工
具介紹。介紹在實際開發中*常使用的輔助開發工具以及框架。第五部分:Swift 語言基礎。以 Swift 3.0 為基礎,介
紹 Swift 語言的基本使用以及語法知識。第六部分:React Native 基礎。重點介紹了 React Native 的環境部署、基本概
念以及常用框架的使用方法等內容。
本書適合 iOS 開發新手、iOS 程序員使用,也可以作為相關培訓機構和大專院校教學用書。
本書面向學習iOS開發的零基礎讀者。本書從實際開發的角度,提煉出所需要的iOS核心知識,讓讀者在短時間內有的放矢地掌握iOS開發的核心技能。為了提升讀者的學習效率,本書配套提供由作者親自錄制的教學視頻,針對每個章節的核心內容進行講解,方便讀者領會并掌握各個知識點。本書共包括5個部分,涵蓋了開發語言、iOS專業知識、常用工具等各個方面。本書的內容是作者多年來從事iOS開發的經驗提煉與總結,是一本既全面立體,又難度適中,且緊扣實踐的書籍。
一、編寫本書的目的
隨著中國移動互聯網行業的蓬勃發展,幾年前,我也積極投身到互聯網創業中。在創業方
向的選擇上,幾經嘗試,最終選擇了互聯網教育。一方面是因為希望為中國的互聯網企業提供
更多的合格人才;另外一方面也希望為廣大的學子提供一個高質量、低價格的學習平臺。目前,
我國的高等教育的人才供給與市場需求之間還存在著巨大的偏差,特別在移動開發興起的前幾
年,能夠熟練掌握移動應用開發技能的工程師極為稀缺,因而造成了企業用人成本居高不下。
互聯網企業通常只能靠高薪挖獵才能獲得心儀的員工,這嚴重制約了互聯網企業,特別是中小
互聯網企業的創新與發展步伐。為了解決供需兩端的矛盾,我就在思考能否提供一本高質量且
低價格,既無學習門檻且又符合最佳項目實踐的圖書呢?從去年開始,我和我的伙伴們一同開
始籌劃編寫這本書,把我們在實踐教學過程中以及實踐開發過程中的經驗進行提煉和總結,本
書適合沒有任何移動開發技術的讀者從零開始學習,并且能夠快速掌握實際工作中最常使用的
核心技術,做到合理利用時間且有的放矢地進行學習。
移動技術的開發經過幾年的競爭,已經形成了兩大方向
:iOS 以及 Android。Android 平臺
的用戶數量巨大,且 Android 開發以 Java 語言為基礎,所以之前很多從事 Java 開發的工程師
都轉型成為 Android 開發工程師,其入門門檻相對較低。而蘋果的 iOS 系統,由于其采用的語
言是 Objective-C,在最初階段能夠熟練掌握該門語言的工程師數量極為稀缺,因此造成了 iOS
開發的入門門檻比較高。由于 iOS 系統是一個相對封閉的系統,其前期的語言學習有一定難
度,但是一旦入門之后,其進階學習的難度要比 Android 平臺容易很多。雖然目前 Android 平
臺的用戶數量超過 iOS 平臺,但蘋果設備在工業設計、用戶體驗、客戶價值等方面都有很大的
優勢。
二、本書的主要內容
在開始編寫本書之前,我們團隊內部針對究竟該采用 Objective-C 語言為主,還是 Swift
語言為主,展開了激烈的討論。由于大家學習一門語言更多的目的是出于就業需要,綜合目前
國內的現狀,我們認為在目前階段還是需要以 Objective-C 語言為主。雖然蘋果公司官方以及
國內外很多媒體都在大力推廣 Swift 語言,但就國內現狀而言,Swift 語言還不是一門成熟且
被普遍使用的語言,但我們相信在 2~3 年以后,Swift 語言一定會有較快的發展,而如果從就
業角度考慮,我們認為還是需要優先掌握 Objective-C 語言。在介紹 iOS 平臺的基礎知識過程中,
我們使用了 Objective-C 語言,但對 Swift 語言也提供了入門使用的語法介紹,有興趣的讀者
可以使用 Swift 語言把前面的代碼進行重寫。另外,從 2015 年開始,React Native 變得越發火熱,
為了緊跟技術發展趨勢,同時為了增加大家的就業競爭力,我們在本書中也加入了對 React Native 技術的
介紹。總之,全書的內容是緊緊圍繞就業這個目的展開的,如果你想成為一名 iOS 開發工程師,本書會是
你的一個好選擇。
本書包括六大部分,24 章。
第 1 部分介紹了 Objective-C 語言。如果完整地介紹 Objective-C 語言,需要一本厚厚的書籍,而我
們把 Objective-C 語言在日常編程工作中最常使用的功能進行了提煉,讓大家能夠快速地掌握 Objective-C
語言中最核心的內容。
第 2 部分以 UIKit 框架為主,介紹了 iOS 開發中構成界面所需的各種控件,同時重點介紹了在實際應
用中廣泛使用的幾種控制器,包括普通控制器、導航控制器等。
第 3 部分提供了 iOS 開發中使用的進階內容,包括多線程技術、數據持久化技術、網絡、地圖、傳感器、
核心繪圖、核心動畫、消息推送、證書管理以及應用發布等內容,使讀者能夠對 iOS 開發中的高級知識點
具備完整的認知。
第 4 部分介紹了在 iOS 開發中使用的第三方開源框架和工具。程序員的世界是一個開放的世界。開放、
開源應該是每個致力于從事技術崗位的程序員的追求。借助第三方開源框架以及工具能夠幫助我們極大地
提升開發效率,學會使用其他人提供的梯子已經是當前每個程序員必須掌握的技巧。
第 5 部分我們提供了 Swift 語言的介紹。雖然 Swift 語言目前在國內還沒有完全成為主流,并且其自
身也存在一些不完善的地方,但提前掌握 Swift 語言的基礎對于將來向 Swift 語言過渡是大有益處的。
第 6 部分是 React Native 技術的介紹。React Native 是 Facebook 于 2015 年開源的跨平臺移動應
用開發框架,React Native 之所以近一兩年非常火熱,其中一個重要原因在于其能夠同時完成 iOS 以及
Android 兩個客戶端的編寫。在 React
Native 的章節中我們著重介紹了 React Native 開發環境的部署、重
要概念以及常用控件的使用,使讀者能夠由淺入深地逐步掌握該項技術的核心用法。
三、配書資源
為了幫助各位讀者學習,我們團隊錄制了配套教學視頻,每個視頻的長度都控制在 10 分鐘左右,便
于大家能夠在最短的時間內掌握每個知識點的核心內容,歡迎各位讀者到清華大學出版社官網下載或聯系
作者獲取(www.99ios.com)。另外,針對每個章節,我們都提供了示例代碼,也歡迎各位讀者下載。
四、反饋與勘誤
歡迎廣大讀者對本書做出反饋,讓我們知道本書中哪些部分是您喜歡的或者哪些部分是需要完善的。
如果您對本書有任何建議,請發送郵件至 3300170691@qq.com。
雖然我們團隊十分用心確保內容的準確性,但錯誤依然難以避免。如果在閱讀過程中,您發現了書中
存在的錯誤,非常感謝您能反饋給我們,請將錯誤內容發送至 3300170691@qq.com,這不僅能夠幫助其他
讀者解除疑惑,也可以幫助我們在下一個版本中進行改善。
五、致謝
完成一本書籍的編寫是對技術、體力以及意志的綜合考驗,我們團隊犧牲了無數的休息時間才完成了
全書的編寫。首先,需要感謝清華大學出版社的編輯在編寫過程中給予我們的耐心指導。其次,要感謝我
的伙伴們,特別是湯海波以及閆珍完成了 React Native 以及 Swift 內容的編寫,并對全書的內容進行了審核
;李維佳作為我最優秀的學生完成了全書內容的整理以及案例代碼的編寫。最后,感謝我的愛人,在我
編寫本書期間承擔起了全部的家庭事務
;2017 年恰逢我的父母六十大壽,在此也祝愿兩位老人身體健康,
每天都有好心情!
由于時間倉促,書中難免有不妥之處,請讀者原諒。
史昕
2017 年 12 月
第1部分
Objective-C語言基礎
第 1 章
環境搭建
3
1.1 Xcode 簡介 3
1.2 創建 App 應用 3
1.2.1 下載安裝 Xcode 3
1.2.2 使用 Xcode 創建 App .4
1.2.3 Xcode 開發界面介紹 5
1.3 程序調試 .6
1.3.1 App 運行狀態監控 6
1.3.2 UI 界面分析 6
1.3.3 斷點調試 .7
1.4 Xcode 常用快捷鍵 8
1.5 常用插件 .9
1.5.1 蘋果封鎖第三方插件的原因 .9
1.5.2 源碼編輯器擴展 .9
1.6 快捷代碼段 .10
1.6.1 如何創建代碼段 .10
1.6.2 常用代碼段 .11
第 2 章
數據類型與表達式
13
2.1 數據類型與常量 .13
2.1.1 基本數據類型 .13
2.1.2 限定詞 .15
2.1.3 id 與 instancetype 17
2.2 算術表達式 .18
2.2.1 基本運算符 .18
2.2.2 數據類型轉換 .20
2.3 循環結構 .22
2.3.1 for 循環 22
2.3.2 for-in 循環 .24
2.3.3 while 循環 .26
目
錄
iOS開發:從零基礎到精通
6
2.3.4 break 與 continue 28
2.4 選擇結構 .29
2.4.1 if 語句 29
2.4.2 switch 語句 32
2.4.3 條件運算符 / 三目運算符 .35
2.5 typedef 語句 36
第 3 章
類、對象與方法
38
3.1 類 .38
3.1.1 類的定義 .38
3.1.2 類的繼承 .40
3.2 屬性 .42
3.2.1 屬性的定義 .42
3.2.2 公有屬性與私有屬性 44
3.2.3 屬性關鍵字 .45
3.3 方法 .48
3.3.1 方法的定義 .48
3.3.2 方法的調用 .49
3.3.3 方法的重寫 .52
3.4 對象 .54
3.4.1 創建對象 .54
3.4.2 對象操作 .57
3.5 變量 .60
3.5.1 局部變量 .60
3.5.2 全局變量 .61
3.5.3 靜態變量 .64
3.5.4 const 關鍵字 .66
第 4 章
Foundation 框架
. 69
4.1 Foundation 框架簡介 .69
4.2 字符串類 .69
4.2.1 不可變字符串 NSString 69
4.2.2 可變字符串 NSMutableString
.74
4.3 數組類 .76
4.3.1 不可變數組 NSArray .76
4.3.2 可變數組 NSMutableArray
.79
4.4 字典類 .81
4.4.1 不可變字典 NSDictionary
.81
4.4.2 可變字典
NSMutableDictionary 84
4.5 NSNumber 類 86
7
目錄
4.6 NSDate 類 .88
4.7 NSFileManager 類 92
4.7.1 文件操作 .92
4.7.2 目錄操作 .96
4.7.3 枚舉目錄中的內容 98
4.7.4 文件的讀取與寫入 100
4.8 NSURL 類 .102
4.9 NSBundle 類 .103
第 5 章
Objective-C 語言特性
. 107
5.1 代碼塊 .107
5.1.1 Block 簡介 .107
5.1.2 Block 的參數與返回值 109
5.1.3 操作 Block 外部的變量 . 112
5.1.4 Block 回調 . 114
5.2 分類 . 116
5.3 協議 . 118
5.3.1 協議簡介 . 118
5.3.2 代理 . 119
5.4 KVC .120
5.4.1 使用 KVC 賦值取值 120
5.4.2 字典轉模型 122
5.4.3 修改 readonly 的屬性以及私有屬性 123
5.5 KVO 125
第 6 章
Objective-C 進階
128
6.1 對象復制 .128
6.1.1 淺復制與深復制 128
6.1.2 可變對象復制與不可變對象復制 129
6.1.3 自定義對象復制 135
6.2 內存管理 .137
6.3 預編譯指令 .139
6.3.1 宏定義 .139
6.3.2 #include、#import 與 @class 142
6.3.3 條件編譯 .143
6.4 NSLog() 函數 145
6.4.1 NSLog() 函數基本使用 .145
6.4.2 定制輸入日志的格式 146
6.5 結構 .148
6.5.1 結構的定義與基本使用 148
iOS開發:從零基礎到精通
8
6.5.2 結構的嵌套 150
第2部分
iOS開發基礎
第 7 章
基礎 UI 控件
. 155
7.1 UIKit 框架 .155
7.2 視圖 UIView .156
7.2.1 UIView 簡介 .156
7.2.2 視圖 UIView 的外觀 159
7.2.3 視圖 UIView 的形變 162
7.2.4 視圖 UIView 的層次關系 163
7.2.5 視圖 UIView 的動畫 166
7.2.6 響應用戶交互事件 167
7.2.7 內容模式 contentMode 170
7.2.8 圖片拉伸 .172
7.2.9 使用代碼創建自定義 UIView .175
7.2.10 使用 XIB 創建自定義 UIView
177
7.2.11 控件改變坐標系(convertRect:) 180
7.3 圖片控件 UIImageView 181
7.3.1 基本使用 .181
7.3.2 常用操作 .183
7.3.3 幀動畫功能 185
7.4 按鈕控件 UIButton .186
7.4.1 基本使用 .186
7.4.2 按鈕的創建 188
7.4.3 調整圖標與標題的位置 190
7.5 文本控件 UILabel .192
7.5.1 UILabel 簡介 192
7.5.2 常用的 UILabel 使用場景 .194
7.6 提示框控件 .195
7.7 文本輸入框 UITextField 198
7.7.1 UITextField 的基本屬性 198
7.7.2 UITextField 的代理方法簡介 201
7.7.3 UITextField 的代理方法實例之鍵盤回收
203
7.7.4 UITextField 的代理方法實例之字數限制
205
第 8 章
高級 UI 控件
. 207
8.1 滾動視圖 UIScrollView
.207
8.1.1 UIScrollView 基本使用 .207
8.1.2 UIScrollView 常用代理方法的實現
.209
9
目錄
8.1.3 視圖的縮放功能 212
8.2 表視圖 UITableView 214
8.2.1 UITableView 基本介紹 214
8.2.2 UITableView 的數據源方法 217
8.2.3 了解單元格 UITableViewCell
.219
8.2.4 UITableView 創建示例 220
8.2.5 UITableView 代理方法之點擊單元格
222
8.2.6 UITableView 代理方法之編輯單元格
224
8.2.7 UITableViewCell 性能優化 .227
8.2.8 分段 Section .228
8.2.9 分段 Section 實現示例 231
8.2.10 自定義 Cell .235
8.2.11 Cell 高度的設置 .238
8.2.12 動態調整 Cell 高度(self-sizing) .238
8.2.13 動態調整 Cell 高度(代碼)
240
8.2.14 UITableView FDTemplateLayoutCell 計算 Cell 高度 .244
8.2.15 改變 Cell 位置 247
8.2.16 UITableView 的 Header 和 Footer .247
8.2.17 去除多余的單元格分割線 248
8.3 集合視圖 UICollectionView
249
8.3.1 UICollectionView 簡介 249
8.3.2 UICollectionView 數據源協議
DataSource 252
8.3.3 最簡單的集合視圖實現 253
8.3.4 UICollectionView 代理協議方法簡介 255
8.3.5 UICollectionView 代理方法實例 256
8.3.6 UICollectionViewFlowLayout 簡介 257
8.3.7 UICollectionViewFlowLayout 使用實例 259
8.3.8 UICollectionViewDelegateFlowLayout 類的代理方法實現 262
8.3.9 自定義 Cell .265
8.4 手勢
UIGestureRecognizer 267
8.4.1 UIGestureRecognizer 簡介 267
8.4.2 點擊手勢
UITapGestureRecognizer 269
8.4.3 捏合與旋轉手勢
UIPinchGestureRecognizer .270
8.4.4 滑動手勢
UISwipeGestureRecognizer 273
8.4.5 拖動手勢
UIPanGestureRecognizer 275
8.4.6 長按手勢
UILongPressGestureRecognizer276
第 9 章
控制器
278
9.1 控制器 UIViewController
278
9.1.1 控制器簡介以及創建控制器 278
iOS開發:從零基礎到精通
10
9.1.2 使用 XIB 以及 Storyboard
創建控制器 279
9.1.3 控制器的生命周期 283
9.1.4 使用 Storyboard 切換控制器 285
9.1.5 使用代碼切換控制器 287
9.1.6 控制器嵌套 288
9.2 導航控制器
UINavigationController .291
9.2.1 導航控制器簡介 291
9.2.2 控制器跳轉 295
9.2.3 子控制器的管理 295
9.2.4 UINavigationBar 296
9.2.5 barStyle 屬性 297
9.2.6 barTintColor 與 tintColor
.298
9.2.7 導航欄設置背景圖片 299
9.2.8 UINavigationItem .300
9.2.9 UINavigationItem 定制示例 302
9.2.10 UINavigationItem 顯示原始圖片樣式 304
9.2.11 UINavigationController 的代理方法 .304
9.2.12 順傳數據 .305
9.2.13 使用代理逆傳數據 307
9.2.14 使用通知逆傳數據 309
9.2.15 使 Block 逆傳數據 .310
9.2.16 工具欄 toolBar . 311
9.3 UITabBarController .313
9.3.1 UITabBarController 的常用屬性和方法 .313
9.3.2 UITabBar 的常用屬性和方法 .314
9.3.3 UITabBarItem 的常用屬性和方法 315
9.3.4 微信 TabBar 實現 .316
9.3.5 UITabBarController 的代理協議 .318
9.4 UIWindow、UIView 與
UIViewController 關系 .319
9.4.1 概念簡介 .319
9.4.2 關系描述 .320
第 10 章
其他 UI 控件
. 322
10.1 WKWebView .322
10.1.1 WKWebView 簡介 .322
10.1.2 WKWebView 的基本使用加載網頁
.324
10.1.3 網頁瀏覽控制 325
10.1.4 加載本地文件 328
10.1.5 WKWebView 代理協議之
WKNavigationDelegate .330
10.2 UITextView .330
11
目錄
10.2.1 UITextView 的基本使用 330
10.2.2 UITextView 的代理方法 332
10.3 UIPageControl .333
10.3.1 UIPageControl 介紹 .333
10.3.2 UIPageControl 實際應用 .334
10.4 UIPickerView 338
10.4.1 UIPickerView 簡介 338
10.4.2 UIPickerView 的基本使用 340
10.4.3 相互依賴的多列選擇器 342
10.5 UISilder .345
10.5.1 UISlider 基本介紹 .345
10.5.2 UISlider 實例 .347
10.6 UIDatePicker .349
10.6.1 UIDatePicker 基本介紹 .349
10.6.2 UIDatePicker 基本使用 .349
10.7 UISegmentedControl 351
10.7.1 UISegmentedControl 簡介 .351
10.7.2 UISegmentedControl 實例 .352
第3部分
iOS開發進階
第 11 章
多線程
359
11.1 線程基礎知識 .359
11.2 GCD .362
11.2.1 GCD 基本概念介紹 .362
11.2.2 隊列與任務組合 363
11.2.3 線程間通信 369
11.2.4 隊列組 dispatch group
371
11.2.5 延遲執行操作 373
11.3 NSOperation 374
11.3.1 NSOperation 基本使用 374
11.3.2 線程間通信 379
11.3.3 任務間的執行依賴 380
第 12 章
網絡
. 382
12.1 網絡開發基本概念介紹 382
12.2 常用網絡協議之 HTTP .383
12.3 網絡請求之 GET、POST 請求 384
12.4 AFNetworking 框架介紹 .385
12.5 聚合數據 API 簡介 387
iOS開發:從零基礎到精通
12
12.6 GET 請求與 POST 請求使用示例 .389
12.7 JSON 和 XML 簡單介紹 .391
第 13 章
數據持久化
. 394
13.1 沙盒 .394
13.1.1 沙盒基礎 .394
13.1.2 在 Mac 上查看沙盒目錄 .396
13.2 Plist 文件 .397
13.2.1 Plist 簡介 .397
13.2.2 Plist 文件的讀取 399
13.2.3 Plist 文件的寫入 400
13.2.4 操作實例 .402
13.3 偏好設置 NSUserDefaults
.406
13.3.1 NSUserDefaults 簡介 .406
13.3.2 讀寫示例 .407
13.4 歸檔 .409
13.4.1 基本使用 .409
13.4.2 單個對象歸檔 / 解檔 .410
13.4.3 自定義對象歸檔 / 解檔 .412
13.4.4 歸檔多個自定義對象 416
13.4.5 子類對象的歸檔 419
13.4.6 歸檔多個不同類型的對象 422
13.5 SQLite .424
13.5.1 數據庫的操作 424
13.5.2 表的操作 .427
13.5.3 數據記錄的操作 430
13.6 FMDB 433
13.6.1 基本介紹 .433
13.6.2 更新操作與查詢操作 436
13.6.3 線程安全 .438
13.7 Core Data .439
13.7.1 概念簡介 .439
13.7.2 使用示例 .440
13.8 Realm .445
13.8.1 Realm 基本介紹 .445
13.8.2 Realm 的安裝 .449
13.8.3 常用屬性與方法 451
13.8.4 Realm 使用示例 .453
13
目錄
第 14 章
繪圖和動畫
. 457
14.1 核心繪畫 .457
14.1.1 核心繪畫的基本概念 457
14.1.2 貝塞爾路徑 458
14.1.3 繪圖方法和步驟 460
14.1.4 常見圖形的繪制方法 461
14.2 UIImage 繪圖應用 .464
14.2.1 繪制圖片 .464
14.2.2 添加水印 .467
14.2.3 裁剪圓形圖片 470
14.2.4 截屏 .473
14.3 CALayer 474
14.3.1 CALayer 簡介 474
14.3.2 iOS 開發中的坐標系 .477
14.3.3 動畫屬性 .481
14.4 核心動畫 .482
14.4.1 核心動畫簡介 482
14.4.2 動畫的實現步驟 484
14.4.3 CAPropertyAnimiation 屬性動畫 485
14.4.4 CABasicAnimiation 基本動畫 .486
14.4.5 CAKeyframeAnimation 關鍵幀動畫 .487
14.4.6 CASpringAnimation 彈簧動畫 489
14.4.7 CAAnimationGroup 動畫組 490
14.4.8 CATransition 轉場動畫 492
第 15 章
設計模式
495
15.1 iOS 下的 MVC 設計模式 495
15.2 單例模式 .497
15.3 iOS 下的 MVVM 設計模式 499
第 16 章
自動布局
502
16.1 自動布局簡介 .502
16.2 Masonry .505
第 17 章
設備調用
511
17.1 UIDevice 類 511
17.1.1 獲取設備基本信息 511
17.1.2 獲取電池信息 512
17.1.3 接近傳感器 514
iOS開發:從零基礎到精通
14
17.1.4 方向傳感器 515
17.2 位置應用 .517
17.2.1 CoreLocation 框架簡介 .517
17.2.2 CoreLocation 框架的基本使用 .519
17.2.3 地理信息編碼簡介 522
17.2.4 CLGeocoder 應用案例 1 523
17.2.5 CLGeocoder 應用案例 2 526
17.3 地圖應用 .528
17.3.1 MKMapView 簡介 .528
17.3.2 MKMapView 的基本使用 .530
17.3.3 簡易地圖標注 531
17.3.4 簡易地圖標注示例 533
17.3.5 復雜地圖標注 534
17.3.6 復雜地圖標注示例 535
17.4 相機與相冊 .537
17.4.1 UIImagePickerController 簡介 537
17.4.2 UIImagePickerController 的使用 538
17.5 CoreMotion 框架 540
17.5.1 CoreMotion 基本介紹 540
17.5.2 獲取運動傳感器的裸數據 543
17.5.3 CMDeviceMotion .546
17.6 系統應用調用 .548
17.6.1 撥打電話功能 548
17.6.2 發送短信功能 550
17.6.3 發送郵件功能 552
第 18 章
證書管理與應用發布
555
18.1 證書管理 .555
18.1.1 iOS 開發證書(調試證書)管理 .555
18.1.2 iOS 發布證書創建詳解 .565
18.2 推送證書管理 .574
18.2.1 推送調試證書 574
18.2.2 推送生產證書 577
18.3 App Store 應用發布 .581
18.3.1 App Store 應用發布詳解 .581
18.3.2 App 被拒絕上架的原因解析 .590
第 19 章
消息推送
593
19.1 遠程消息推送 .593
19.1.1 極光(JPush)消息推送集成 .593
15
目錄
19.1.2 獲取推送消息內容 596
19.1.3 打開指定界面(自定義消息內容) 597
19.1.4 管理 App 的 Badge(本地方式) 599
19.1.5 管理 App 的 Badge(遠程服務器方式) 600
19.1.6 更改推送消息提示音 602
19.2 本地消息推送(基于 iOS10 UserNotifications
框架)
604
19.2.1 UNNotificationRequest 類 .604
19.2.2 UNNotificationContent 類 605
19.2.3 UNNotificationTrigger 類.607
19.2.4 UNUserNotificationCenterDelegate 代理協議 609
19.2.5 示例代碼 .610
第 20 章
其他高級知識點
613
20.1 App 的生命周期 .613
20.2 使用 AVFoundation 框架實現掃描二維碼
.618
第4部分
常用第三方框架與工具
第 21 章
常用第三方框架介紹
623
21.1 CocoaPods .623
21.1.1 CocoaPods 的安裝 .623
21.1.2 使用 CocoaPods 安裝 SDK .626
21.2 高德地圖 .629
21.2.1 高德地圖簡介 629
21.2.2 高德地圖 SDK 的安裝 630
21.2.3 地圖 SDK 簡介 632
21.2.4 繪制地圖標注 634
21.2.5 定位 SDK .636
21.3 SDWebImage .637
21.4 免費短信驗證碼 .639
21.5 MBProgressHUD 643
21.5.1 MBProgressHUD 簡介 .643
21.5.2 MBProgressHUD 基本使用 .645
21.6 YYModel .649
21.6.1 YYModel 簡介 .649
21.6.2 YYModel 使用案例 .650
第 22 章
常用開發工具介紹
652
22.1 RevealAppUI 界面分析 .652
iOS開發:從零基礎到精通
16
22.1.1 Reveal 使用簡介 652
22.1.2 分析任意 iOS 應用的 UI 界面 655
22.2 Charles網絡抓包工具 657
22.2.1 抓取 HTTP 請求(基礎) 657
22.2.2 抓取 HTTPS 請求(高級) 659
22.3 GitHub .664
22.3.1 GitHub 簡介 .664
22.3.2 GitHub Desktop 桌面工具的安裝 .664
22.3.3 創建倉庫 .667
22.3.4 版本控制 .670
22.3.5 分支 branch 操作 .676
22.3.6 沖突處理 .678
22.3.7 團隊合作 .681
第5部分
Swift語言基礎
第 23 章
Swift 語言基礎
689
23.1 Swift 簡介 .689
23.2 常量和變量 .691
23.3 基本運算符 .693
23.4 字符串和字符 .694
23.5 集合類型 .700
23.6 流程控制 .707
23.6.1 循環語句 .707
23.6.2 條件語句 .710
23.6.3 控制轉移語句 712
23.7 函數基礎 .715
23.8 函數類型 .718
23.9 閉包 .720
23.10 枚舉 .724
23.11 類和結構體 .728
23.12 屬性 .731
23.13 方法 .735
23.14 下標 .738
23.15 繼承 .740
23.16 初始化 .743
23.17 析構 .749
23.18 擴展 .751
23.19 協議 .757
23.20 泛型 .760
17
目錄
23.21 可選鏈 .763
第6部分
React Native基礎
第 24 章
React Native 基礎
. 771
24.1 搭建 React Native 開發環境 .771
24.2 編寫 Hello World 776
24.3 屬性 Props .778
24.4 狀態 State 780
24.5 樣式 style 781
24.6 界面布局 .784
24.7 網絡 .788
24.8 Text 組件 .791
24.9 Image 組件 794
24.10 Button 組件 .796
24.11 TouchableHighlight 組件 .799
24.12 TextInput 組件 .802
24.13 KeyboardAvoidingView 組件 805
24.14 ScrollView 組件 808
24.15 ListView 組件 . 811
24.16 Navigator 組件 815
24.17 TabBarIOS 組件 820
參考文獻
824