这书聚焦点在APP“商品”的设计构思、开发设计和经营方面,着重强调构架和设计模式的必要性,清醒地将设计模式运用到编码的撰写中,重中之重详细介绍iOS公司级应用程序开发的设计思维方法,并与全栈开发技术性结合在一起。 全书分成iOS基本篇、Web与Native混合开发方式篇和全栈开发技术篇。iOS基本篇关键详细介绍iOS基本知识、多种多样设计模式下的景图控制板中间的传值、App与网络服务器插口的界定、CollectionView的运用;Web与Native混合开发方式篇关键详细介绍Block的运用、iOS互联网恳求、JavaScript基本、Web与Native的互动;全栈开发技术篇关键详细介绍Node.js、Express、AngularJS、MongoDB、MEAN全栈技术性的保持。
和凌志,教授,国家工信部人才交流中心验证老师;有着十几年移动互联开发设计工作经验,依次在 Siemens Mobile、 Flextronics 等殴美企业出任手机上软件架构师。2014年, 为北京高校视频录制慕课“iOS公司级运用开发设计”。近些年,致力于全栈科研开发, 意味着商品有“点时”APP ——轻巧知识分享平台。
目录
- iOS基础篇
- 第1章 iOS基础知识 2
- 1.1 Objective-C语法简介 2
- 1.1.1 Objective-C的奇特之处 2
- 1.1.2 如何声明一个实例变量 4
- 1.1.3 Objective-C字符串 5
- 1.2 Objective-C的对象类型与基本数据类型 6
- 1.2.1 对象类型与基本数据类型的混合使用 6
- 1.2.2 对象类型与基本数据类型的转换 7
- 1.3 不可变数组与可变数组 7
- 1.3.1 不可变数组(NSArray)的特征 8
- 1.3.2 可变数组(NSMutableArray)的特征 8
- 1.3.3 如何遍历数组中的对象 8
- 1.3.4 NSArray与NSMutableArray的应用 10
- 1.4 不可变字典与可变字典 11
- 1.4.1 不可变字典(NSDictionary) 11
- 1.4.2 可变字典(NSMutableDictionary) 12
- 1.4.3 如何遍历字典中的对象 12
- 1.4.4 NSArray与NSDictionary的应用 13
- 1.4.5 创建类的对象 13
- 1.5 iOS应用程序概述 14
- 1.5.1 应用程序的入口 14
- 1.5.2 应用程序委托(AppDelegate) 14
- 1.5.3 UIApplication应用场景 15
- 1.5.4 一种简单的永久数据存储方式 16
- 1.6 iOS定制化控件 17
- 1.6.1 定制化View的创建 17
- 1.6.2 小标签(UILabel),大用场 19
- 1.6.3 如何实现输入框随键盘上移 20
- 1.7 视图的层级管理 23
- 1.7.1 创建视图的方法 23
- 1.7.2 如何从父视图中移除子视图 25
- 1.7.3 登录页面的实现 26
- 1.8 iOS编程规范 28
- 1.8.1 代码的可维护性 29
- 1.8.2 面向对象的编程思想 29
- 1.8.3 优先编写轻量级的ViewController 30
- 1.9 小结 31
- 第2章 视图控制器之间的传值 32
- 2.1 通过Delegate实现ViewController之间的传值 32
- 2.1.1 Delegate概述 32
- 2.1.2 学习Delegate的困惑 32
- 2.1.3 从一道经典的面试题说起 33
- 2.1.4 学习Delegate常出现的几个误区 33
- 2.1.5 Delegate技术难点在哪里 34
- 2.1.6 数据逆向传送一定要通过Delegate吗 34
- 2.1.7 Delegate应用五步曲 35
- 2.1.8 Delegate优势 38
- 2.2 通过单例实现ViewController之间的传值 38
- 2.2.1 单例的创建 39
- 2.2.2 单例的初始化 40
- 2.2.3 单例设计模式的本质 41
- 2.2.4 通过单例实现传值 41
- 2.2.5 单例模式在登录模块中的应用 42
- 2.2.6 单例模式的优势 44
- 2.3 通过KVO实现ViewController之间的传值 44
- 2.3.1 什么是KVC 44
- 2.3.2 什么是KVO 45
- 2.3.3 KVO的特点 46
- 2.3.4 使用KVO的步骤 46
- 2.3.5 KVO的实现方法 46
- 2.3.6 KVO应用注意事项 50
- 2.4 通过NSNotification实现ViewController之间的传值 50
- 2.4.1 NSNotification的定义 51
- 2.4.2 NSNotificationCenter 51
- 2.4.3 发出通知 51
- 2.4.4 接收通知 52
- 2.4.5 移除通知 52
- 2.4.6 异步模式下的通知操作 53
- 2.4.7 通过NSNotification实现ViewController之间的传值 53
- 2.4.8 NSNotification与Delegate的区别 55
- 2.4.9 监听系统自带的NSNotification 56
- 2.5 小结 58
- 第3章 App与服务器接口的定义 59
- 3.1 关于JSON的认识 59
- 3.2 App与服务器接口的定义 61
- 3.2.1 App与后台的接口设计 61
- 3.2.2 后台返回的数据格式 61
- 3.2.3 后台返回的提示信息 62
- 3.3 JSON与Model的转换 62
- 3.3.1 JSONModel常见的用法 63
- 3.3.2 JSONModel的几个属性用法 67
- 3.4 小结 69
- 第4章 CollectionView的应用 70
- 4.1 CollectionView与TableView孰优孰劣 70
- 4.1.1 TableView的应用场景 70
- 4.1.2 CollectionView的应用场景 71
- 4.1.3 CollectionView与TableView概念对比 71
- 4.1.4 CollectionView与TableView的性能对比 71
- 4.2 什么是UICollectionView 71
- 4.3 实现一个简单的UICollectionView 72
- 4.4 UICollectionViewCell视图层级 73
- 4.5 UICollectionViewDataSource 74
- 4.6 关于Cell的重用 74
- 4.7 UICollectionViewDelegate 75
- 4.8 UICollectionViewLayout 76
- 4.9 实现一个简单的瀑布流 77
- 4.9.1 通过手动编码创建UICollectionView 78
- 4.9.2 直接拖曳一个CollectionViewController 81
- 4.9.3 基于Xib创建一个UICollectionViewCell 86
- 4.10 自定义瀑布流的应用场景 88
- 4.11 自定义Flow Layout进行瀑布流布局 88
- 4.11.1 自定义瀑布流的应用场景 89
- 4.11.2 自定义瀑布流的实现思路 90
- 4.11.3 创建自定义的Flow Layout 90
- 4.11.4 创建自定义的CollectionViewCell 92
- 4.11.5 关于initWithFrame:方法的使用 93
- 4.11.6 自定义瀑布流的完整实现 94
- 4.11.7 UICollectionView相关的类图 96
- 4.11.8 如何实现UICollectionView的轮播 97
- 4.12 CollectionView与TableView的区别 98
- 4.13 图片轮播的实现思路 98
- 4.14 CollectionView注意事项 99
- 4.15 小结 100
- Web与Native混合开发模式
- 第5章 Block的应用 102
- 5.1 Block缘起 102
- 5.2 Block概述 103
- 5.3 Block的声明、实现与调用 104
- 5.3.1 Block的声明 104
- 5.3.2 Block的实现 106
- 5.3.3 Block的调用 108
- 5.3.4 Block外部变量的访问 109
- 5.4 Block的应用场景 110
- 5.4.1 Block用于completionHandler 110
- 5.4.2 Block声明为实例变量 113
- 5.4.3 typedef Block 114
- 5.5 通过Block实现视图控制器之间的逆向传值 115
- 5.5.1 应用场景 115
- 5.5.2 代码实现 115
- 5.6 小结 118
- 第6章 iOS网络请求 119
- 6.1 iOS网络请求概述 119
- 6.2 AFNetworking的应用 119
- 6.2.1 AFNetworking概述 119
- 6.2.2 AFNetworking框架使用方法 121
- 6.2.3 影响网络请求的几个条件 122
- 6.2.4 善用URL宏定义 124
- 6.2.5 URl接口应统一管理 124
- 6.2.6 AFNetworking的二次封装 126
- 6.3 AFNetworking的序列化问题 126
- 6.3.1 AFNetworking请求格式 127
- 6.3.2 AFNetworking响应格式 128
- 6.4 异步请求数据并刷新UI页面 128
- 6.5 远程文件下载 130
- 6.5.1 基于AFNetworking的文件下载 130
- 6.5.2 基于NSURLSession的文件下载 132
- 6.5.3 网络安全访问设置 133
- 6.6 小结 134
- 第7章 JavaScript基础 135
- 7.1 JavaScript语法 135
- 7.2 变量的声明与赋值 136
- 7.3 如何判断两个字符串是否相等 137
- 7.4 创建JavaScript对象的三种方法 138
- 7.5 函数声明与函数表达式 140
- 7.6 可立即调用的函数表达式 143
- 7.7 循环的实现 145
- 7.8 防止JavaScript自动插入分号 146
- 7.9 严格模式 147
- 7.10 如何运行与调试JavaScript代码 148
- 7.10.1 把JavaScript代码内嵌到HTML页面中 148
- 7.10.2 通过Node.js运行JavaScript代码 150
- 7.11 JavaScript的面向对象设计思想 150
- 7.12 JavaScript的异步编程模式 151
- 7.12.1 Promise对象 152
- 7.12.2 生成Promise实例对象 152
- 7.12.3 Promise原型方法 154
- 7.12.4 Promise的catch方法 154
- 7.13 如何在HTML中嵌入JavaScript 155
- 7.13.1 <script>标签 155
- 7.13.2 <script>标签的位置 156
- 7.13.3 嵌入JavaScript代码与外部文件引用 157
- 7.14 JavaScript与JSON 157
- 7.15 小结 158
- 第8章 Web与Native的交互 159
- 8.1 混合开发模式概述 159
- 8.1.1 Webkit简介 159
- 8.1.2 JavaScriptCore简介 160
- 8.1.3 Objective-C调用JavaScript 160
- 8.2 网页调用iOS的原生方法 162
- 8.2.1 应用场景 162
- 8.2.2 技术实现思路 163
- 8.2.3 代码实现 163
- 8.2.4 代码解读 164
- 8.2.5 Objective-C与JavaScript的数据类型 166
- 8.2.6 Objective-C访问HTML文件 167
- 8.3 iOS调用JavaScript 168
- 8.3.1 Objective-C调用JavaScript代码 169
- 8.3.2 Objective-C获取JavaScript中的变量 170
- 8.3.3 在Objective-C中,调用带有参数的JavaScript函数 170
- 8.3.4 在Objective-C中调用不带参数的JavaScript函数 171
- 8.4 JavaScript调用Objective-C代码 172
- 8.4.1 JavaScript调用Objective-C代码 172
- 8.4.2 JavaScript调用Objective-C函数对象 173
- 8.5 小结 174
- 全栈开发技术
- 第9章 Node.js入门指南 176
- 9.1 概述 176
- 9.2 Node.js生态 176
- 9.3 Node开发环境的搭建 177
- 9.4 Node.js验证 177
- 9.5 第一个Node.js工程 178
- 9.5.1 创建Node.js工程 178
- 9.5.2 运行Node.js工程 179
- 9.5.3 Node.js服务的自动重启 181
- 9.6 小结 182
- 第10章 Express——后端框架 183
- 10.1 概述 183
- 10.2 Express工程的创建 183
- 10.3 Express中的GET与POST请求 184
- 10.3.1 GET请求 184
- 10.3.2 POST请求 185
- 10.4 小结 185
- 第11章 AngularJS——Google前端框架 186
- 11.1 AngularJS概述 186
- 11.2 AngularJS指令概述 188
- 11.2.1 AngualrJS指令:ng-app 188
- 11.2.2 AngularJS指令:ng-init 189
- 11.2.3 AngularJS指令:ng-model 189
- 11.2.4 ng-app与ng-model示例 189
- 11.2.5 AngularJS指令:ng-click 191
- 11.3 AngularJS构建单页面应用 191
- 11.3.1 单页面应用的优势 191
- 11.3.2 轻松构建单页面应用 193
- 11.3.3 单页面应用的实现 194
- 11.4 AngularJS的加载 199
- 11.4.1 AngularJS的引用 199
- 11.4.2 加载AngularJS静态资源库 199
- 11.5 AngularJS控制器 200
- 11.5.1 AngularJS控制器的创建 200
- 11.5.2 AngularJS控制器的应用 200
- 11.5.3 AngularJS的数据绑定 202
- 11.6 $scope用法 204
- 11.7 小结 207
- 第12章 MongoDB——文档数据库 208
- 12.1 MongoDB概述 208
- 12.1.1 关于MongoDB 208
- 12.1.2 MongoDB的历史 208
- 12.1.3 MongoDB的优势 209