从零开始学Swift pdf

图书网 2018年8月23日19:33:26
评论
1.9K
摘要

基于Swift 2.x,教你如何从零开始开发并上架应用
涵盖Cocoa Touch框架、混合编程(Objective-C、C/C++与Swift)、并发编程、SpriteKit等

从零开始学Swift 内容简介

本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部分,包括Swift 语法篇、CocoaTouch 框架编程篇、混合编程篇、进阶篇、项目实战篇,囊括了开发工具介绍、语言基础知识、编写HelloWorld 程序,直至应用在App Store 上线的所有内容。此外,本书前20 章专门配有同步练习,以帮助读者掌握所学知识。

从零开始学Swift 目录

第一部分 Swift 语法篇

第1 章 准备起航 2

1.1 本书约定 2

1.1.1 示例代码约定 2

1.1.2 图示约定 3

1.1.3 函数和方法签名约定 4

1.1.4 承接上一行代码约定 5

1.1.5 代码行号约定 5

1.2 Swift 开发工具 6

1.2.1 Xcode 开发工具 6

1.2.2 AppCode 开发工具 12

1.3 本章小结 13

1.4 同步练习 13

第2 章 第一个Swift 程序 14

2.1 使用REPL 14

2.1.1 启动Swift REPL 14

2.1.2 使用Swift REPL 15

2.2 使用Playground 16

2.2.1 编程利器Playground 16

2.2.2 编写HelloWorld 程序 18

2.3 使用Web 网站 21

2.4 通过Xcode 创建OS X 工程 22

2.4.1 创建OS X 工程 22

2.4.2 编译和运行 23

2.5 通过AppCode 创建OS X 工程 24

2.5.1 创建OS X 工程 24

2.5.2 编译和运行 25

2.6 使用swiftc 命令 27

2.6.1 编译 27

2.6.2 运行 28

2.7 代码解释 28

2.8 在Linux 下编译和运行Swift 程序 29

2.9 本章小结 32

2.10 同步练习 32

第3 章 Swift 语法基础 33

3.1 标识符和关键字 33

3.1.1 标识符 33

3.1.2 关键字 34

3.2 常量和变量 35

3.2.1 常量 35

3.2.2 变量 36

3.2.3 使用var 还是let 36

3.3 注释 37

3.4 表达式 38

3.5 本章小结 39

3.6 同步练习 39

第4 章 运算符 41

4.1 算术运算符 41

4.1.1 一元运算符 41

4.1.2 二元运算符 41

4.1.3 算术赋值运算符 43

4.2 关系运算符 43

4.3 逻辑运算符 45

4.4 位运算符 46

4.5 其他运算符 47

4.6 本章小结 48

4.7 同步练习 48

第5 章 Swift 原生数据类型 50

5.1 Swift 数据类型 50

5.2 整型 50

5.3 浮点型 51

5.4 数字表示方式 52

5.4.1 进制数字表示 52

5.4.2 指数表示 52

5.4.3 其他表示 53

5.5 数字类型之间的转换 53

5.5.1 整型之间的转换 53

5.5.2 整型与浮点型之间的转换 54

5.6 布尔型 54

5.7 元组类型 54

5.8 可选类型 56

5.8.1 可选类型概念 56

5.8.2 可选类型值拆包 56

5.8.3 可选绑定 57

5.9 本章小结 57

5.10 同步练习 57

第6 章 Swift 原生字符串 59

6.1 字符 59

6.1.1 Unicode 编码 59

6.1.2 转义符 60

6.2 创建字符串 61

6.3 可变字符串 61

6.3.1 字符串拼接 61

6.3.2 字符串插入、删除和替换 62

6.4 字符串比较 63

6.4.1 大小和相等比较 63

6.4.2 前缀和后缀比较 64

6.5 本章小结 65

6.6 同步练习 65

第7 章 控制语句 66

7.1 分支语句 66

7.1.1 if 语句 66

7.1.2 switch 语句 68

7.1.3 guard 语句 69

7.2 循环语句 71

7.2.1 while 语句 71

7.2.2 repeat-while 语句 73

7.2.3 for 语句 74

7.2.4 for-in 语句 75

7.3 跳转语句 76

7.3.1 break 语句 76

7.3.2 continue 语句 78

7.3.3 fallthrough 语句 79

7.4 范围与区间运算符 81

7.4.1 switch 中使用区间运算符 81

7.4.2 for-in 中使用区间运算符 82

7.5 值绑定 83

7.5.1 if 中的值绑定 83

7.5.2 guard 中的值绑定 84

7.5.3 switch 中的值绑定 85

7.6 where 语句 85

7.6.1 switch 中使用where 语句 86

7.6.2 for-in 中使用where 语句 86

7.6.3 guard 中使用where 语句 86

7.7 本章小结 87

7.8 同步练习 87

第8 章 Swift 原生集合类型 91

8.1 Swift 中的数组集合 91

8.1.1 数组声明和初始化 92

8.1.2 可变数组 93

8.1.3 数组遍历 94

8.2 Swift 中的字典集合 94

8.2.1 字典声明与初始化 95

8.2.2 可变字典 96

8.2.3 字典遍历 97

8.3 Swift 中的Set 集合 98

8.3.1 Set 声明和初始化 98

8.3.2 可变Set 集合 99

8.3.3 Set 集合遍历 100

8.3.4 Set 集合运算 101

8.4 本章小结 102

8.5 同步练习 102

第9 章 函数 104

9.1 使用函数 104

9.2 传递参数 105

9.2.1 使用外部参数名 105

9.2.2 省略外部参数名 105

9.2.3 参数默认值 106

9.2.4 可变参数 106

9.2.5 参数的传递引用 107

9.3 函数返回值 107

9.3.1 无返回值函数 107

9.3.2 多返回值函数 108

9.4 函数类型 108

9.4.1 作为函数返回类型使用 109

9.4.2 作为参数类型使用 110

9.5 嵌套函数 111

9.6 本章小结 112

9.7 同步练习 112

第10 章 闭包 115

10.1 回顾嵌套函数 115

10.2 闭包的概念 115

10.3 使用闭包表达式 116

10.3.1 类型推断简化 117

10.3.2 隐藏return 关键字 117

10.3.3 省略参数名 118

10.3.4 使用闭包返回值 118

10.4 使用尾随闭包 119

10.5 捕获上下文中的变量和常量 120

10.6 本章小结 121

10.7 同步练习 121

第11 章 Swift 语言中的面向对象特性 123

11.1 面向对象概念和基本特征 123

11.2 Swift 中的面向对象类型 123

11.3 枚举 124

11.3.1 成员值 124

11.3.2 原始值 126

11.3.3 相关值 127

11.4 结构体与类 128

11.4.1 类和结构体定义 128

11.4.2 再谈值类型和引用类型 129

11.4.3 引用类型的比较 131

11.4.4 运算符重载 132

11.5 类型嵌套 133

11.6 可选链 134

11.6.1 可选链的概念 134

11.6.2 使用问号(?)和感叹号(!) 136

11.7 访问限定 136

11.7.1 访问范围 137

11.7.2 访问级别 138

11.7.3 使用访问级别最佳实践 138

11.8 选择类还是结构体最佳实践 140

11.8.1 类和结构体的异同 141

11.8.2 选择的原则 141

11.9 本章小结 142

11.10 同步练习 142

第12 章 属性与下标 146

12.1 存储属性 146

12.1.1 存储属性概念 146

12.1.2 延迟存储属性 147

12.2 计算属性 148

12.2.1 计算属性的概念 148

12.2.2 只读计算属性 150

12.2.3 结构体和枚举中的计算属性 150

12.3 属性观察者 151

12.4 静态属性 153

12.4.1 结构体静态属性 154

12.4.2 枚举静态属性 155

12.4.3 类静态属性 156

12.5 使用下标 156

12.5.1 下标概念 157

12.5.2 示例:二维数组 157

12.6 本章小结 159

12.7 同步练习 159

第13 章 方法 160

13.1 实例方法 160

13.1.1 使用规范的命名 160

13.1.2 结构体和枚举方法变异 163

13.2 静态方法 165

13.2.1 结构体静态方法 165

13.2.2 枚举静态方法 166

13.2.3 类静态方法 166

13.3 本章小结 167

13.4 同步练习 167

第14 章 构造与析构 168

14.1 构造函数 168

14.1.1 默认构造函数 168

14.1.2 构造函数与存储属性初始化 169

14.1.3 使用外部参数名 170

14.2 构造函数重载 172

14.2.1 构造函数重载概念 172

14.2.2 构造函数代理 172

14.2.3 类构造函数横向代理 173

14.3 析构函数 174

14.4 本章小结 176

14.5 同步练习 176

第15 章 类继承 178

15.1 从一个示例开始 178

15.2 构造函数继承 179

15.2.1 构造函数调用规则 179

15.2.2 构造过程安全检查 180

15.2.3 构造函数继承 184

15.3 重写 186

15.3.1 重写实例属性 186

15.3.2 重写静态属性 188

15.3.3 重写实例方法 189

15.3.4 重写静态方法 190

15.3.5 下标重写 190

15.3.6 使用final 关键字 191

15.4 类型检查与转换 193

15.4.1 使用is 进行类型检查 194

15.4.2 使用as、as!和as?进行类型转换 195

15.4.3 使用Any 和AnyObject 类型 197

15.5 本章小结 198

15.6 同步练习 198

第16 章 扩展 200

16.1 “轻量级”继承机制 200

16.2 声明扩展 200

16.3 扩展计算属性 201

16.4 扩展方法 202

16.5 扩展构造函数 203

16.5.1 值类型扩展构造函数 203

16.5.2 引用类型扩展构造函数 204

16.6 扩展下标 204

16.7 本章小结 205

16.8 同步练习 205

第17 章 协议 206

17.1 协议概念 206

17.2 协议 206

17.3 协议方法 207

17.3.1 协议实例方法 207

17.3.2 协议静态方法 208

17.3.3 协议变异方法 208

17.4 协议属性 210

17.4.1 协议实例属性 210

17.4.2 协议静态属性 211

17.5 面向协议编程 211

17.5.1 协议类型 212

17.5.2 协议的继承 214

17.5.3 协议扩展 215

17.5.4 协议的合成 216

17.5.5 扩展中遵从协议 217

17.5.6 面向协议编程示例:表视图中使用扩展协议 217

17.6 本章小结 220

17.7 同步练习 220

第18 章 泛型 222

18.1 一个问题的思考 222

18.2 泛型函数 222

18.2.1 使用泛型函数 223

18.2.2 多类型参数 223

18.3 泛型类型 223

18.4 泛型扩展 225

18.5 本章小结 226

18.6 同步练习 226

第19 章 Swift 内存管理 227

19.1 Swift 内存管理概述 227

19.1.1 引用计数 227

19.1.2 示例:Swift 自动引用计数 228

19.2 强引用循环 229

19.3 打破强引用循环 233

19.3.1 弱引用 233

19.3.2 无主引用 236

19.4 闭包中的强引用循环 238

19.4.1 一个闭包中的强引用循环示例 238

19.4.2 解决闭包强引用循环 239

19.5 本章小结 241

19.6 同步练习 241

第20 章 错误处理 243

20.1 Cocoa 错误处理模式 243

20.2 do-try-catch 错误处理模式 244

20.2.1 捕获错误 244

20.2.2 错误类型 244

20.2.3 声明抛出错误 245

20.2.4 在函数或方法中抛出错误 245

20.2.5 try?和try!的使用区别 246

20.3 示例:MyNotes 应用数据持久层实现 247

20.3.1 MyNotes 应用介绍 247

20.3.2 MyNotes 应用数据持久层设计 248

20.3.3 实现Note 实体类 248

20.3.4 NoteDAO 代码实现 249

20.3.5 使用defer 语句释放资源 250

20.3.6 测试示例 251

20.4 本章小结 252

20.5 同步练习 252

第21 章 Swift 编码规范 253

21.1 命名规范 253

21.2 注释规范 255

21.2.1 文件注释 255

21.2.2 文档注释 255

21.2.3 代码注释 256

21.2.4 使用地标注释 257

21.3 声明 259

21.3.1 变量或常量声明 259

21.3.2 属性声明 260

21.4 代码排版 260

21.4.1 空行 260

21.4.2 空格 261

21.4.3 断行 262

21.4.4 缩进 263

21.5 本章小结 265

第二部分 Cocoa Touch 框架编程篇

第22 章 Foundation 框架 268

22.1 数字类NSNumber 268

22.1.1 获得NSNumber 对象 268

22.1.2 比较NSNumber 对象 270

22.1.3 数字格式化 271

22.1.4 NSNumber 与Swift 原生数字类型之间的桥接 272

22.2 字符串类 273

22.2.1 NSString 类 273

22.2.2 NSMutableString 类 275

22.2.3 NSString 与String 之间的桥接 277

22.3 数组类 278

22.3.1 NSArray 类 278

22.3.2 NSMutableArray 类 279

22.3.3 NSArray 与Swift 原生数组之间的桥接 280

22.4 字典类 281

22.4.1 NSDictionary 类 281

22.4.2 NSMutableDictionary 类 282

22.4.3 NSDictionary 与Swift 原生字典之间的桥接 283

22.5 NSSet 集合类 283

22.5.1 NSSet 类 284

22.5.2 NSMutableSet 类 284

22.5.3 NSSet 与Swift 原生Set 之间的桥接 285

22.6 文件管理 286

22.6.1 访问目录 286

22.6.2 目录操作 287

22.6.3 文件操作 288

22.7 字节缓存 289

22.7.1 NSData 和NSMutableData 类 289

22.7.2 示例:Base64 解码与编码 291

22.8 日期与时间 292

22.8.1 使用NSDate 类 292

22.8.2 日期时间格式化 294

22.8.3 使用NSCalendar 和NSDateComponents类 295

22.8.4 示例:时区转换 296

22.9 使用谓词NSPredicate 过滤数据 297

22.9.1 一个过滤员工花名册的示例 298

22.9.2 使用谓词NSPredicate 300

22.9.3 NSPrdicate 与集合 300

22.9.4 格式说明符 301

22.9.5 运算符 302

22.10 使用正则表达式 304

22.10.1 在NSPredicate 中使用正则表达式 305

22.10.2 使用NSRegularExpression 305

22.10.3 示例:日期格式转换 307

22.11 本章小结 309

第23 章 iOS 开发基础 310

23.1 iOS 介绍 310

23.2 第一个iOS 应用:HelloWorld 310

23.2.1 创建工程 311

23.2.2 Xcode 中的iOS 工程模板 316

23.2.3 程序剖析 317

23.3 iOS API 简介 319

23.4 本章小结 319

第24 章 Core Foundation 框架 320

24.1 数据类型映射 320

24.2 内存管理 321

24.2.1 Objective-C 的MRC 内存管理 321

24.2.2 对象所有权 322

24.2.3 内存托管对象 323

24.2.4 内存非托管对象 324

24.3 本章小结 324

第25 章 Cocoa Touch 设计模式及应用 325

25.1 单例模式 325

25.1.1 问题提出 325

25.1.2 解决方案 325

25.2 目标与动作 326

25.2.1 问题提出 326

25.2.2 解决方案 327

25.3 输出口 331

25.3.1 问题提出 331

25.3.2 解决方案 331

25.4 选择器 334

25.4.1 问题提出 334

25.4.2 解决方案 334

25.4.3 示例:使用定时器变换视图背景 335

25.5 委托与数据源 337

25.5.1 问题提出 337

25.5.2 委托解决方案 339

25.5.3 数据源解决方案 343

25.6 通知机制 346

25.6.1 问题提出 346

25.6.2 解决方案 346

25.6.3 示例:关闭和打开键盘 347

25.7 MVC 模式 348

25.7.1 MVC 模式概述 348

25.7.2 Cocoa Touch 中的MVC 模式 349

25.8 响应者链与触摸事件 351

25.8.1 响应者对象与响应链 351

25.8.2 触摸事件 352

25.9 本章小结 357

第26 章 UIKit 框架 358

26.1 视图控制器 358

26.1.1 与导航相关的视图控制器 358

26.1.2 视图控制器的生命周期 358

26.2 视图与UIView 360

26.2.1 UIView 继承层次结构 360

26.2.2 视图分类 362

26.2.3 应用界面的构建层次 362

26.3 界面构建技术 363

26.3.1 使用故事板 363

26.3.2 使用XIB 文件 365

26.3.3 使用代码 368

26.4 开关控件 370

26.5 滑块控件 371

26.6 分段控件 373

26.7 工具栏 374

26.8 导航栏 376

26.9 表视图 379

26.9.1 表视图组成 379

26.9.2 单元格组成和样式 380

26.9.3 示例:纯代码创建简单表视图 381

26.10 本章小结 386

第三部分 混合编程篇

第27 章 Swift 与Objective-C 混合编程 388

27.1 选择语言 388

27.2 文件扩展名 388

27.3 Swift 与Objective-C API 映射 388

27.3.1 构造函数映射 389

27.3.2 方法名映射 391

27.4 同一应用目标中的混合编程 393

27.4.1 什么是目标 394

27.4.2 Swift 调用Objective-C 396

27.4.3 Objective-C 调用Swift 399

27.5 同一框架目标中的混合编程 402

27.5.1 链接库和框架 402

27.5.2 Swift 调用Objective-C 404

27.5.3 测试框架目标 407

27.5.4 Objective-C 调用Swift 410

27.6 本章小结 413

第28 章 Swift 与C/C++混合编程 414

28.1 数据类型映射 414

28.1.1 C 语言基本数据类型 414

28.1.2 C 语言指针类型 415

28.2 应用目标中的混合编程 419

28.2.1 Swift 调用C API 419

28.2.2 Swift 调用C++ API 421

28.3 框架目标中的混合编程 425

28.3.1 同一框架目标中Swift 调用C 或C++ API 425

28.3.2 Swift 调用第三方库中的C 或C++ API 428

28.4 示例:用SQLite 嵌入式数据库实现MyNotes 数据持久层 430

28.4.1 Note 实体类代码 430

28.4.2 创建表 431

28.4.3 插入数据 432

28.4.4 查询数据 434

28.4.5 应用沙箱目录 435

28.4.6 表示层开发 436

28.5 本章小结 440

第四部分 进 阶 篇

第29 章 程序调试 442

29.1 Xcode 调试工具 442

29.1.1 调试功能 442

29.1.2 输出窗口 443

29.1.3 变量查看窗口 444

29.2 设置和查看断点 445

29.2.1 断点设置 445

29.2.2 管理断点 446

29.3 使用Xcode 中的Instruments 工具 447

29.3.1 跟踪内存使用 447

29.3.2 内存泄漏查找 449

29.4 iOS 真机调试 453

29.4.1 Xcode 设置 453

29.4.2 设备设置 455

29.5 本章小结 456

第30 章 并发编程 457

30.1 并发相关概念 457

30.1.1 CPU 与并发执行 457

30.1.2 进程与线程 457

30.2 GCD 技术 457

30.2.1 GCD 概念 458

30.2.2 调度队列 458

30.3 GCD 示例 458

30.3.1 主线程阻塞问题 458

30.3.2 使用GCD 解决主线程阻塞 460

30.4 GCD 与单例模式 460

30.5 本章小结 461

第31 章 SpriteKit 游戏引擎 462

31.1 移动平台游戏引擎介绍 462

31.2 第一个SpriteKit 游戏 462

31.2.1 创建工程 462

31.2.2 工程剖析 465

31.3 一切都是节点 468

31.3.1 节点“家族” 469

31.3.2 节点树 469

31.3.3 节点中重要的方法 470

31.3.4 节点中重要的属性 470

31.4 精灵 471

31.4.1 精灵类SKSpriteNode 471

31.4.2 示例:沙漠英雄场景 473

31.4.3 使用纹理图集性能优化 478

31.5 场景切换 481

31.5.1 场景切换方法 481

31.5.2 场景过渡动画 481

31.5.3 示例:沙漠英雄场景切换 481

31.6 动作 484

31.6.1 常用动作 484

31.6.2 组合动作 487

31.6.3 示例:帧动画实现 491

31.7 粒子系统 493

31.7.1 粒子系统属性 494

31.7.2 内置粒子系统模板 495

31.8 游戏音乐与音效 499

31.8.1 音频文件介绍 499

31.8.2 iOS 和OS X 平台音频优化 499

31.8.3 背景音乐 500

31.8.4 3D 音效 501

31.9 物理引擎 502

31.9.1 物理引擎核心概念 502

31.9.2 物理引擎中的物体 503

31.9.3 接触与碰撞 504

31.10 本章小结 507

第五部分 项目实战篇

第32 章 项目实战:基于分层架构的多版本iPhone 计算器应用 510

32.1 应用分析与设计 510

32.1.1 应用概述 510

32.1.2 需求分析 510

32.1.3 原型设计 511

32.2 分层架构设计 511

32.2.1 低耦合应用架构 511

32.2.2 详细设计 512

32.2.3 分层架构设计有多种模式 514

32.2.4 选择语言 514

32.3 基于同一工程同一目标纯Swift 的实现 515

32.3.1 创建工程 515

32.3.2 业务逻辑层开发 516

32.3.3 表示层开发 520

32.4 基于同一工程同一目标Swift 调用Objective-C 的实现 531

32.4.1 在Swift 工程中添加Objective-C类 531

32.4.2 Objective-C 实现业务逻辑层 532

32.5 基于同一工程不同目标Swift 调用Objective-C 的实现 534

32.5.1 添加业务逻辑层目标 535

32.5.2 暴露的头文件CalcLogic.h 535

32.5.3 修改表示层 536

32.6 基于同一工作空间不同工程下Swift 调用Objective-C 的实现 536

32.6.1 创建工作空间 537

32.6.2 暴露头文件CalcLogic.h 537

32.6.3 修改表示层 537

32.7 本章小结 537

第33 章 游戏App 实战:《迷失航线》 538

33.1 《迷失航线》游戏分析与设计 538

33.1.1 《迷失航线》故事背景 538

33.1.2 需求分析 538

33.1.3 原型设计 539

33.1.4 游戏脚本 540

33.2 任务1:游戏工程的创建与初始化 540

33.2.1 迭代1.1:创建工程 540

33.2.2 迭代1.2:自定义类型维护 540

33.2.3 迭代1.3:添加资源文件 543

33.3 任务2:创建Loading 场景 543

33.3.1 迭代2.1:设计场景 544

33.3.2 迭代2.2:Loading 动画 545

33.3.3 迭代2.3:预处理加载纹理 545

33.4 任务3:创建Home 场景 546

33.4.1 迭代3.1:设计场景 546

33.4.2 迭代3.2:实现代码 547

33.5 任务4:创建设置场景 549

33.5.1 迭代4.1:设计场景 550

33.5.2 迭代4.2:实现代码 550

33.6 任务5:创建帮助场景 552

33.6.1 迭代5.1:设计场景 553

33.6.2 迭代5.2:实现代码 553

33.7 任务6:实现游戏场景 554

33.7.1 迭代6.1:设计场景 555

33.7.2 迭代6.2:创建敌人精灵 556

33.7.3 迭代6.3:创建玩家飞机精灵 560

33.7.4 迭代6.4:创建子弹精灵 560

33.7.5 迭代6.5:初始化游戏场景 561

33.7.6 迭代6.6:玩家移动飞机 565

33.7.7 迭代6.7:游戏循环与任务调度 566

33.7.8 迭代6.8:游戏场景菜单实现 566

33.7.9 迭代6.9:玩家飞机发射子弹 568

33.7.10 迭代6.10:子弹与敌人的碰撞检测 569

33.7.11 迭代6.11:玩家飞机与敌人的碰撞检测 571

33.8 任务7:游戏结束场景 573

33.8.1 迭代7.1:设计场景 573

33.8.2 迭代7.2:实现代码 574

33.9 本章小结 575

第34 章 《迷失航线》游戏上架苹果App Store 576

34.1 苹果App Store 576

34.2 还有“最后一公里” 577

34.2.1 添加图标 577

34.2.2 添加启动界面 579

34.2.3 修改发布产品属性 581

34.3 为发布进行编译 582

34.3.1 创建开发者证书 583

34.3.2 创建App ID 587

34.3.3 创建描述文件 589

34.3.4 发布编译 593

34.4 发布上架 594

34.4.1 创建应用 595

34.4.2 应用定价 597

34.4.3 基本信息输入 597

34.4.4 上传应用 601

34.4.5 提交审核 603

34.5 审核不通过的常见原因 604

34.5.1 功能问题 604

34.5.2 用户界面问题 604

34.5.3 商业问题 605

34.5.4 不当内容 605

34.5.5 其他问题 605

34.6 本章小结 605

从零开始学Swift 精彩文摘

Swift语言的错误处理功能提供了处理程序运行时错误的能力。Swift 2.x提供新的do-try-catch错误处理模式:先是尝试操作,如果失败则处理错误,最后完成后释放资源。

本章主要为大家介绍Swift 2.x的错误处理模式。

20.1 Cocoa错误处理模式

每一种语言几乎都提供自己的错误处理模式,由于历史的原因Swift错误处理模式,在Swift 1.x和Swift 2.x中截然不同。

Swift 1.x代码错误处理模式采用Cocoa框架错误处理模式,到现在Objective-C还沿用这种处理模式,而Swift 2.x之后采用了do-try-catch错误处理模式。

图书网:从零开始学Swift pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: