新書推薦:
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:HK$
56.4
《
英国简史(刘金源教授作品)
》
售價:HK$
101.2
《
便宜货:廉价商品与美国消费社会的形成
》
售價:HK$
77.3
《
读书是一辈子的事(2024年新版)
》
售價:HK$
79.4
《
乐道文库·什么是秦汉史
》
售價:HK$
82.8
《
汉娜·阿伦特与以赛亚·伯林 : 自由、政治与人性
》
售價:HK$
109.8
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:HK$
112.7
《
药食同源中药鉴别图典
》
售價:HK$
68.8
|
編輯推薦: |
畅销书《iOS开发指南》作者最新力作
基于Swift 2.x,教你如何从零开始开发并上架应用
涵盖Cocoa Touch框架、混合编程(Objective-C、CC 与Swift)、并发编程、SpriteKit等
|
內容簡介: |
本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部分,包括Swift 语法篇、CocoaTouch 框架编程篇、混合编程篇、进阶篇、项目实战篇,囊括了开发工具介绍、语言基础知识、编写HelloWorld 程序,直至应用在App Store 上线的所有内容。此外,本书前20 章专门配有同步练习,以帮助读者掌握所学知识。
|
關於作者: |
关东升
国内著名iOS和Cocos技术作家、iOS技术顾问、Cocos最有价值专家(CVP)、智捷课堂首席培训专家、51CTO社区iOS技术顾问。
他精通iOS、Android和Windows及HTML5等移动开发技术,擅长应用和游戏类项目开发,曾先后主持开发:大型网络游戏《神农诀》的iOS和Android客户端;国家农产品追溯系统的iPad客户端;酒店预订系统的iOS客户端;金融系统的iOS、Windows及Android客户端。与此同时,他长期为中国移动研究院、方正科技、大唐电信、中国石油、工商银行、南方航空、惠普、东软集团、NTT等企事业单位提供技术咨询及员工培训。
另著有:
《iOS开发指南》
《Swift开发指南》
《iOS传感器应用开发最佳实践》
《iOS网络编程与云端应用最佳实践》
《iOS图形图像、动画和多媒体编程技术最佳实践》
《品味移动设计》
《交互设计的艺术》
《iPhone与iPad开发实战》
《Android开发案例驱动教程》
《Android网络游戏开发实战》
《Cocos2d-x实战:C 卷》
《Cocos2d-x实战:JS卷》
《Cocos2d-x实战:Lua卷》
《Cocos2d-x实战:工具卷》
|
目錄:
|
第一部分 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 使用REPL14
2.1.1 启动Swift REPL14
2.1.2 使用Swift REPL15
2.2 使用Playground16
2.2.1 编程利器Playground16
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还是let36
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 数字类NSNumber268
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 使用谓词NSPredicate300
22.9.3 NSPrdicate与集合300
22.9.4 格式说明符301
22.9.5 运算符302
22.10 使用正则表达式304
22.10.1 在NSPredicate中使用正则表达式305
22.10.2 使用NSRegularExpression305
22.10.3 示例:日期格式转换307
22.11 本章小结309
第23章 iOS开发基础310
23.1 iOS 介绍310
23.2 第一个iOS应用:HelloWorld310
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 视图与UIView360
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-C396
27.4.3 Objective-C调用Swift399
27.5 同一框架目标中的混合编程402
27.5.1 链接库和框架402
27.5.2 Swift调用Objective-C404
27.5.3 测试框架目标407
27.5.4 Objective-C调用Swift410
27.6 本章小结413
第28章 Swift与CC 混合编程414
28.1 数据类型映射414
28.1.1 C语言基本数据类型414
28.1.2 C语言指针类型415
28.2 应用目标中的混合编程419
28.2.1 Swift调用C API419
28.2.2 Swift调用C API421
28.3 框架目标中的混合编程425
28.3.1 同一框架目标中Swift调用C或C API425
28.3.2 Swift调用第三方库中的C或C API428
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 精灵类SKSpriteNode471
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.h535
32.5.3 修改表示层536
32.6 基于同一工作空间不同工程下Swift调用Objective-C的实现536
32.6.1 创建工作空间537
32.6.2 暴露头文件CalcLogic.h537
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 Store576
34.1 苹果App Store576
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 ID587
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
|
|