第1部分 Objective-C语言基础 3
第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
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
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
6.5.2 结构的嵌套 150
第2部分 iOS开发基础 155
第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
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 长按手势UILongPressGestureRecognizer 276
第9章 控制器 278
9.1 控制器UIViewController 278
9.1.1 控制器简介以及创建控制器 278
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 UINavigationltem显示原始图片样式 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
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开发进阶 359
第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
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
第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
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
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 本地消息推送(基于iOS 10 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部分 常用第三方框架与工具 623
第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 Reveal——AppUI界面分析 652
22.1.1 Reveal使用简介 652
22.1.2 分析任意i0S应用的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语言基础 689
第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
23.21 可选链 763
第6部分 React Native基础 771
第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