简介
本书基于《疯狂iOS讲义(上)》第2版升级而来,已真正升级成Swift、Objective-C双语讲解。本书所有案例(除前面介绍Objective-C语法部分之外)全部都提供Swift、Objective-C两种语言的版本。本书以新iOS 9.2、Xcode 7.2为平台,全面介绍了iOS应用开发的基础知识。书中每个案例、每个截图都全面升级到iOS 9.2。本书全面、细致地介绍了Objective-C的面向对象语法、Foundation框架的核心类库用法、文件 IO体系等,详细讲解了iOS应用开发的基本理论,以及iOS应用的MVC设计和事件处理编程,重点介绍了iOS界面编程、iOS应用的生命周期、Quartz 2D绘图、坐标变换、Core Image滤镜等内容,掌握这些基础内容之后,即可开发出基础的iOS App应用和简单的iOS游戏。本书最后介绍了一个疯狂连连看的实例。本书详细介绍了iOS 9新增的UIAlertController、UIStackView控件,其中UIStackView正是为了自适应不同尺寸屏幕而设计的控件,可用于取代早期iOS开发中的约束(约束实在是太难以管理了)。本书还重点介绍了Xcode 7提供的Storyboard Reference,通过使用Storyboard Reference,可以对大型iOS App的界面设计进行分解、重构,从而保证项目具有更好的可维护性。本书从“项目驱动”的角度来讲授理论,全书一共包括近百个实例,这些示范性的实例既可帮助读者更好地理解各知识点在实际开发中的应用,也可供读者在实际开发时作为参考,拿来就用。如果读者在阅读本书时遇到了技术问题,可以登录疯狂Java联盟()发帖,笔者将会及时予以解答。本书为所有打算深入掌握iOS编程的读者而编写,适合各种层次的iOS学习者和开发者阅读,也适合作为大学教育、培训机构的iOS教材。但如果只是想简单涉猎iOS应用开发,则本书过于庞大,不适合阅读。
目录
第1章 iOS应用与开发环境 1
1.1 iOS简介及其开发语言 2
1.1.1 Swift简介 2
1.1.2 Objective-C简介 2
1.1.3 iOS简介 3
1.2 搭建iOS开发环境 4
1.2.1 下载并安装Xcode和SDK 4
1.3 第一个Objective-C程序 7
1.3.1 使用文本编辑器开发Objective-C
程序 7
1.3.2 使用Xcode工具开发Objective-C
程序 9
1.4 熟悉Xcode 11
1.4.1 创建iOS项目 11
1.4.2 熟悉导航面板 13
1.4.3 熟悉检查器面板 16
1.4.4 熟悉库面板 17
1.4.5 使用Xcode的帮助系统 19
1.5 本章小结 21
第2章 数据类型和运算符 22
2.1 注释 23
2.2 标识符和变量 24
2.2.1 分隔符 24
2.2.2 标识符规则 26
2.2.3 Objective-C关键字 26
2.3 数据类型分类 26
2.4 基本数据类型 27
2.4.1 整型 27
2.4.2 NSLog输出函数及格式字符 28
2.4.3 字符型 30
2.4.4 浮点型 31
2.4.5 枚举型 32
2.4.6 BOOL类型 34
2.5 类型转换 35
2.5.1 自动类型转换 36
2.5.2 强制类型转换 37
2.5.3 表达式类型的自动提升 37
2.6 运算符 38
2.6.1 算术运算符 38
2.6.2 赋值运算符 41
2.6.3 位运算符 41
2.6.4 扩展后的赋值运算符 43
2.6.5 比较运算符 44
2.6.6 逻辑运算符 45
2.6.7 逗号运算符 45
2.6.8 三目运算符 46
2.6.9 运算符的结合性和优先级 47
2.7 本章小结 48
第3章 流程控制与数组 49
3.1 顺序结构 50
3.2 分支结构 50
3.2.1 if条件语句 50
3.2.2 switch分支语句 54
3.3 循环结构 56
3.3.1 while循环语句 56
3.3.2 do while循环语句 58
3.3.3 for循环 59
3.3.4 嵌套循环 62
3.4 控制循环结构 63
3.4.1 使用break结束循环 63
3.4.2 使用continue结束本次循环 64
3.4.3 使用return结束函数 64
3.5 goto语句 65
3.6 数组 67
3.6.1 定义数组 67
3.6.2 数组的显式初始化 68
3.6.3 使用数组 69
3.6.4 多维数组 70
3.6.5 多维数组的初始化 71
3.6.6 字符数组、字符串与结束标志 77
3.6.7 输出字符串和字符串函数 78
3.6.8 数组的应用举例 80
3.7 本章小结 81
第4章 C语言特性 82
4.1 函数 83
4.1.1 定义函数 83
4.1.2 函数声明 86
4.1.3 函数的参数传递机制 87
4.1.4 递归函数 91
4.1.5 数组作为函数参数 92
4.1.6 内部函数与外部函数 96
4.2 局部变量与全局变量 98
4.2.1 局部变量 98
4.2.2 全局变量 99
4.2.3 外部全局变量与内部全局变量 101
4.2.4 动态存储与静态存储 102
4.3 预处理 105
4.3.1 使用#define、#undef执行
宏定义 105
4.3.2 带参数的宏定义 107
4.3.3 使用#ifdef、#ifndef、#else、
#endif执行条件编译 108
4.3.4 使用#if、#elif、#else、#endif
执行条件编译 110
4.3.5 #include与#import 111
4.4 指针 112
4.4.1 指针的概念 112
4.4.2 指针变量及其基本用法 113
4.4.3 指针变量作为函数参数 115
4.5 指针与数组 117
4.5.1 指向数组的指针变量 117
4.5.2 指针运算 118
4.5.3 数组变量作为函数参数 120
4.5.4 指向多维数组的指针变量 122
4.6 字符串与指针 124
4.6.1 使用字符指针表示字符串 125
4.6.2 字符指针作为函数参数 125
4.7 函数与指针 127
4.7.1 用函数指针变量调用函数 127
4.7.2 用函数指针变量作为函数参数 128
4.7.3 返回指针的函数 129
4.8 指针数组和指向指针变量的指针 131
4.8.1 指针数组与main()函数形参 131
4.8.2 指向指针变量的指针 134
4.9 结构体 134
4.9.1 定义结构体 134
4.9.2 typedef语句 136
4.9.3 初始化结构体变量 138
4.9.4 结构体数组 139
4.10 块 140
4.10.1 块的基本语法 140
4.10.2 块与局部变量 141
4.10.3 直接使用块作为参数 142
4.10.4 使用typedef定义块类型 143
4.11 本章小结 144
第5章 面向对象(上) 145
5.1 类和对象 146
5.1.1 定义类 146
5.1.2 对象的产生和使用 150
5.1.3 对象和指针 152
5.1.4 self关键字 154
5.1.5 id类型 157
5.2 方法详解 158
5.2.1 方法的所属性 158
5.2.2 形参个数可变的方法 159
5.3 成员变量 160
5.3.1 成员变量及其运行机制 160
5.3.2 模拟类变量 163
5.3.3 单例(Singleton)模式 164
5.4 隐藏和封装 165
5.4.1 理解封装 165
5.4.2 使用访问控制符 165
5.4.3 理解@package访问控制符 169
5.4.4 合成存取方法 170
5.4.5 使用点语法访问属性 176
5.5 键值编码(KVC)与键值监听
(KVO) 176
5.5.1 简单的KVC 177
5.5.2 处理不存在的key 179
5.5.3 处理nil值 181
5.5.4 key路径 182
5.5.5 键值监听(KVO) 184
5.6 对象初始化 187
5.6.1 为对象分配空间 187
5.6.2 初始化方法与对象初始化 187
5.6.3 便利的初始化方法 189
5.7 类的继承 191
5.7.1 继承的特点 191
5.7.2 重写父类的方法 193
5.7.3 super关键字 194
5.8 多态 197
5.8.1 多态性 197
5.8.2 指针变量的强制类型转换 200
5.8.3 判断指针变量的实际类型 201
5.9 本章小结 202
第6章 面向对象(下) 203
6.1 Objective-C的包装类 204
6.1.1 它们不是包装类 204
6.1.2 NSValue和NSNumber 205
6.2 处理对象 206
6.2.1 打印对象和description方法 206
6.2.2 ==和isEqual:方法 208
6.3 类别与扩展 212
6.3.1 类别(category) 213
6.3.2 利用类别对类进行模块化设计 215
6.3.3 使用类别来调用私有方法 215
6.3.4 扩展(extension) 217
6.4 协议(protocol)与委托 219
6.4.1 规范、协议与接口 219
6.4.2 使用类别实现非正式协议 220
6.4.3 正式协议的定义 221
6.4.4 遵守(实现)协议 222
6.4.5 协议与委托(delegate) 225
6.5 使用@try处理异常 228
6.5.1 使用@try...@catch...@finally
捕获异常 229
6.5.2 访问异常信息 231
6.5.3 使用@finally回收资源 232
6.5.4 抛出异常与自定义异常类 233
6.6 Objective-C反射机制 235
6.6.1 获得Class 235
6.6.2 检查继承关系 236
6.6.3 动态调用方法 237
6.7 手动内存管理 241
6.7.1 对象的引用计数 242
6.7.2 对象所属权 245
6.7.3 方法中的保留和释放 247
6.7.4 使用自动释放池 248
6.7.5 自动释放池的销毁时机与
工作过程 250
6.7.6 临时对象与事件循环中的
自动释放池 251
6.7.7 手动内存管理的规则总结 252
6.8 自动引用计数 253
6.8.1 自动引用计数概述 253
6.8.2 @autoreleasepool块 254
6.8.3 使用弱引用解决强引用循环 255
6.9 本章小结 258
第7章 Foundation框架详解 259
7.1 字符串(NSString与
NSMutableString) 260
7.1.1 创建字符串 260
7.1.2 NSString的常用功能 261
7.1.3 可变字符串
(NSMutableString) 262
7.2 日期与时间 263
7.2.1 日期与时间(NSDate) 264
7.2.2 日期格式器
(NSDateFormatter) 265
7.2.3 日历(NSCalendar)与日期
组
1.1 iOS简介及其开发语言 2
1.1.1 Swift简介 2
1.1.2 Objective-C简介 2
1.1.3 iOS简介 3
1.2 搭建iOS开发环境 4
1.2.1 下载并安装Xcode和SDK 4
1.3 第一个Objective-C程序 7
1.3.1 使用文本编辑器开发Objective-C
程序 7
1.3.2 使用Xcode工具开发Objective-C
程序 9
1.4 熟悉Xcode 11
1.4.1 创建iOS项目 11
1.4.2 熟悉导航面板 13
1.4.3 熟悉检查器面板 16
1.4.4 熟悉库面板 17
1.4.5 使用Xcode的帮助系统 19
1.5 本章小结 21
第2章 数据类型和运算符 22
2.1 注释 23
2.2 标识符和变量 24
2.2.1 分隔符 24
2.2.2 标识符规则 26
2.2.3 Objective-C关键字 26
2.3 数据类型分类 26
2.4 基本数据类型 27
2.4.1 整型 27
2.4.2 NSLog输出函数及格式字符 28
2.4.3 字符型 30
2.4.4 浮点型 31
2.4.5 枚举型 32
2.4.6 BOOL类型 34
2.5 类型转换 35
2.5.1 自动类型转换 36
2.5.2 强制类型转换 37
2.5.3 表达式类型的自动提升 37
2.6 运算符 38
2.6.1 算术运算符 38
2.6.2 赋值运算符 41
2.6.3 位运算符 41
2.6.4 扩展后的赋值运算符 43
2.6.5 比较运算符 44
2.6.6 逻辑运算符 45
2.6.7 逗号运算符 45
2.6.8 三目运算符 46
2.6.9 运算符的结合性和优先级 47
2.7 本章小结 48
第3章 流程控制与数组 49
3.1 顺序结构 50
3.2 分支结构 50
3.2.1 if条件语句 50
3.2.2 switch分支语句 54
3.3 循环结构 56
3.3.1 while循环语句 56
3.3.2 do while循环语句 58
3.3.3 for循环 59
3.3.4 嵌套循环 62
3.4 控制循环结构 63
3.4.1 使用break结束循环 63
3.4.2 使用continue结束本次循环 64
3.4.3 使用return结束函数 64
3.5 goto语句 65
3.6 数组 67
3.6.1 定义数组 67
3.6.2 数组的显式初始化 68
3.6.3 使用数组 69
3.6.4 多维数组 70
3.6.5 多维数组的初始化 71
3.6.6 字符数组、字符串与结束标志 77
3.6.7 输出字符串和字符串函数 78
3.6.8 数组的应用举例 80
3.7 本章小结 81
第4章 C语言特性 82
4.1 函数 83
4.1.1 定义函数 83
4.1.2 函数声明 86
4.1.3 函数的参数传递机制 87
4.1.4 递归函数 91
4.1.5 数组作为函数参数 92
4.1.6 内部函数与外部函数 96
4.2 局部变量与全局变量 98
4.2.1 局部变量 98
4.2.2 全局变量 99
4.2.3 外部全局变量与内部全局变量 101
4.2.4 动态存储与静态存储 102
4.3 预处理 105
4.3.1 使用#define、#undef执行
宏定义 105
4.3.2 带参数的宏定义 107
4.3.3 使用#ifdef、#ifndef、#else、
#endif执行条件编译 108
4.3.4 使用#if、#elif、#else、#endif
执行条件编译 110
4.3.5 #include与#import 111
4.4 指针 112
4.4.1 指针的概念 112
4.4.2 指针变量及其基本用法 113
4.4.3 指针变量作为函数参数 115
4.5 指针与数组 117
4.5.1 指向数组的指针变量 117
4.5.2 指针运算 118
4.5.3 数组变量作为函数参数 120
4.5.4 指向多维数组的指针变量 122
4.6 字符串与指针 124
4.6.1 使用字符指针表示字符串 125
4.6.2 字符指针作为函数参数 125
4.7 函数与指针 127
4.7.1 用函数指针变量调用函数 127
4.7.2 用函数指针变量作为函数参数 128
4.7.3 返回指针的函数 129
4.8 指针数组和指向指针变量的指针 131
4.8.1 指针数组与main()函数形参 131
4.8.2 指向指针变量的指针 134
4.9 结构体 134
4.9.1 定义结构体 134
4.9.2 typedef语句 136
4.9.3 初始化结构体变量 138
4.9.4 结构体数组 139
4.10 块 140
4.10.1 块的基本语法 140
4.10.2 块与局部变量 141
4.10.3 直接使用块作为参数 142
4.10.4 使用typedef定义块类型 143
4.11 本章小结 144
第5章 面向对象(上) 145
5.1 类和对象 146
5.1.1 定义类 146
5.1.2 对象的产生和使用 150
5.1.3 对象和指针 152
5.1.4 self关键字 154
5.1.5 id类型 157
5.2 方法详解 158
5.2.1 方法的所属性 158
5.2.2 形参个数可变的方法 159
5.3 成员变量 160
5.3.1 成员变量及其运行机制 160
5.3.2 模拟类变量 163
5.3.3 单例(Singleton)模式 164
5.4 隐藏和封装 165
5.4.1 理解封装 165
5.4.2 使用访问控制符 165
5.4.3 理解@package访问控制符 169
5.4.4 合成存取方法 170
5.4.5 使用点语法访问属性 176
5.5 键值编码(KVC)与键值监听
(KVO) 176
5.5.1 简单的KVC 177
5.5.2 处理不存在的key 179
5.5.3 处理nil值 181
5.5.4 key路径 182
5.5.5 键值监听(KVO) 184
5.6 对象初始化 187
5.6.1 为对象分配空间 187
5.6.2 初始化方法与对象初始化 187
5.6.3 便利的初始化方法 189
5.7 类的继承 191
5.7.1 继承的特点 191
5.7.2 重写父类的方法 193
5.7.3 super关键字 194
5.8 多态 197
5.8.1 多态性 197
5.8.2 指针变量的强制类型转换 200
5.8.3 判断指针变量的实际类型 201
5.9 本章小结 202
第6章 面向对象(下) 203
6.1 Objective-C的包装类 204
6.1.1 它们不是包装类 204
6.1.2 NSValue和NSNumber 205
6.2 处理对象 206
6.2.1 打印对象和description方法 206
6.2.2 ==和isEqual:方法 208
6.3 类别与扩展 212
6.3.1 类别(category) 213
6.3.2 利用类别对类进行模块化设计 215
6.3.3 使用类别来调用私有方法 215
6.3.4 扩展(extension) 217
6.4 协议(protocol)与委托 219
6.4.1 规范、协议与接口 219
6.4.2 使用类别实现非正式协议 220
6.4.3 正式协议的定义 221
6.4.4 遵守(实现)协议 222
6.4.5 协议与委托(delegate) 225
6.5 使用@try处理异常 228
6.5.1 使用@try...@catch...@finally
捕获异常 229
6.5.2 访问异常信息 231
6.5.3 使用@finally回收资源 232
6.5.4 抛出异常与自定义异常类 233
6.6 Objective-C反射机制 235
6.6.1 获得Class 235
6.6.2 检查继承关系 236
6.6.3 动态调用方法 237
6.7 手动内存管理 241
6.7.1 对象的引用计数 242
6.7.2 对象所属权 245
6.7.3 方法中的保留和释放 247
6.7.4 使用自动释放池 248
6.7.5 自动释放池的销毁时机与
工作过程 250
6.7.6 临时对象与事件循环中的
自动释放池 251
6.7.7 手动内存管理的规则总结 252
6.8 自动引用计数 253
6.8.1 自动引用计数概述 253
6.8.2 @autoreleasepool块 254
6.8.3 使用弱引用解决强引用循环 255
6.9 本章小结 258
第7章 Foundation框架详解 259
7.1 字符串(NSString与
NSMutableString) 260
7.1.1 创建字符串 260
7.1.2 NSString的常用功能 261
7.1.3 可变字符串
(NSMutableString) 262
7.2 日期与时间 263
7.2.1 日期与时间(NSDate) 264
7.2.2 日期格式器
(NSDateFormatter) 265
7.2.3 日历(NSCalendar)与日期
组
疯狂iOS讲义
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!