发表于2024-11-29
◆为保证Swift 语言的稳定和优良,苹果公司先后为XCode 6 推出了7 个Beta 版本,一个GM(GoldenMaster)版本,后稳定于正式版XCode 6,本书是基于当前正式版编写的。此前没有一本书是基于正式版编写的。
◆不仅有Swift 基础语法,也有iOS开发过程中众多关键技术节点,如库管理工具Cocoapods、原型设计工具Axure Pro、云端测试工具、Cordova/Phonegap HTML5 HyberApp的入门知识、真机调试、打包上传等。被Swift 社区的读者们誉为“Swift 世界的地图”。
◆5位老码农钻研4个月整理提炼而成,案例紧贴社会热点,比如老码去蓝翔、铡美案、韩剧《继承者们》、江湖武侠、杨过、小龙女、甚至网络红人凤姐、芙蓉等都相继出场,使大家在嬉笑怒骂间领悟Swift 语言精髓和用法。
◆为了一个属于老码的梦,他们在本书中倾注了大量的精力,伴随着XCode的每一次更新他们都要重新调整内容,改写案例。他们较真,即使一个书中的案例都要在群里讨论老半天;他们执着,维护翻译600多页的文档;他们,令人敬佩!
《老码说编程之玩转Swift江湖》由老码团队的5位资深IT工程师钻研4个月学习整理和提炼而成,全书分为10个章节:第1~2章讲述如何搭建开发环境,讲解XCode 6.1的用法;第3~6章重点讲述Swift的语法知识;第7章讲解Swift和Objective-C之间的相互调用;最后3章通过一个完整的案例“魔法盒子”来讲解如何使用Swift语言从零开始开发一款商用的App。本书在知识布局上不仅有对Swift基础语法的讲解,同时也对iOS开发过程中的众多关键技术节点进行阐述,如库管理工具Cocoapods、原型设计工具Axure Pro、云端测试工具、Cordova/Phonegap HTML5 HyberApp的入门知识、真机调试、打包上传等。我们旨在通过本书给读者朋友们绘制一条我们走过且读者朋友未来要走的路。本书被Swift社区的读者们誉为“Swift世界的地图”。
为了保证Swift语言的稳定和优良,苹果公司先后为XCode 6推出了7个Beta版本,一个GM(Golden Master)版本,最后稳定于正式版XCode 6.1,本书是基于当前全新正式版编写的。老码团队在编写本书的同时,也在持续维护翻译《The Swift Programming Language》中文版。
《老码说编程之玩转Swift江湖》普遍采用诙谐、幽默、轻松的语言,力图为读者们创造一个轻松的学习氛围,书中的案例紧贴社会热点,比如老码去蓝翔、铡美案、韩剧《继承者们》、江湖武侠、杨过、小龙女、甚至网络红人凤姐、芙蓉等都会相继出场,使大家在嬉笑怒骂间领悟Swift语言精髓和用法。
★和成都IT圈有一些接触,并且和老码的Baelish有过几次交流,当他把这本书的前3章草稿发到我的桌面上时,我心里还有些怀疑,等到阅读了第1章和第2章,我恨不得赶紧打开笔记本,装虚拟机,操作一遍。该书算得上是一本初学者的必读课本。
——中国科学院光电研究所在读博士姚光乐
★老王(Tyrion)说他在写书,我随口说:“要不要哥给你写篇序?”结果这群老家伙真的让我给他们写点啥,阅读了一下样书,拿给了我项目组做iOS的兄弟审阅了一番,得出这样一句话——一本可以当地图的启蒙教材。
——东软集团成都分公司嵌入式事业部负责人罗传勇
★我花了四天的时间帮这本书做第8章、第9章和第10章的外部Review,开始有点仓促,觉得在中国写书不必太当真,可是老码负责人打电话说:“你的一点努力,可能就有数万初学者受益。”从来没有觉得这么有正义感过。说一下我Review时的感觉:逻辑清晰,特别是对赢利模式的总结很到位;语言幽默,虽然刻板的我觉得有点啰嗦。所以如果你是刚入门的新手,强烈推荐本书。
——成都麦博斯移动创新有限公司CTO王天河
★做了这么多年的测试,竟被闺蜜Snow喊去做试读。花了一周时间通读了这本“巨著”,请让我描述一下一个程序猿的感受:整本书把语法讲得跟说故事一样,语法讲解很清晰,特别是对Swift的思想描述得很到位,后面的开发案例讲解了整个开发的生命周期。最后决定了,让Snow送我一本,我也要转行做iPhoneApp开发。
——成都志投科技有限公司测试经理张燕
★从Numbbb翻译的《SwiftProgramingLanguage》中文版网站知道了老码团队,在学习Swift时受到了Tyrion的很多指点,充分感受到了一群老工程师的严谨和对开源的执着:我们不用担心去哪里下载XCode,因为老码云盘里都有;我们不用担心Swift语言的更新,因为老码们会及时更新Swift的更新消息;阅读了这本书的前4章,我深深地被打动了,故事里讲述语法,案例中融会贯通。
——Swift兴趣交流二群群友车冰
★刚开始觉得Tyrion挺烦的,每天发老码团队的微博,还曾经嘲讽他打广告,可是后来在和他讨论MutatingMethod方法应该翻译为突变方法、变性方法还是变质方法时,我慢慢地对这群人的态度发生了改变:他们较真,即使一个书中的案例都要在群里讨论老半天;他们执着,维护翻译600多页的文档;他们貌似很有钱,因为他们在群里经常喊我们不要买他们的书而去看他们翻译的Swift文档。码哥的书是业界良心!
——SwiftDeveloper群群友杨帆
第1章 从零搭建Swift开发环境
1.1 虚拟机安装Mac OS
1.1.1 准备工作
1.1.2 动手吧
1.2 X86电脑安装Mac OS
1.2.1 安装方式简介
1.2.2 规划分区
1.2.3 使用硬盘助手Leopard
1.2.4 使用变色龙Chemeleon
1.2.5 使用HFS+
1.2.6 正式安装
1.3 结语
第2章 玩转XCode
2.1 下载与安装XCode
2.1.1 下载XCode
2.1.2 安装XCode
2.2 XCode之初体验
2.2.1 欢迎界面
2.2.2 第一个Swift程序
2.2.3 初识主界面
2.2.4 工具栏
2.2.5 导航区域
2.2.6 编辑区域
2.2.7 调试区域
2.2.8 组件区域
2.3 XCode的调试大法
2.3.1 简单粗暴的NSLog
2.3.2 断点调试之LLDB
2.4 老码的锦囊―帮助文档
2.5 结语
第3章 Swift语法那些事儿
3.1 Swift的碑文
3.2 常量和变量
3.2.1 常量和变量的命名
3.2.2 打印常量和变量
3.3 类型标注
3.4 注释
3.4.1 单行注释
3.4.2 多行注释
3.5 分号的落寞
3.6 语法届的直性子―整型
3.7 语法届学术范―浮点型
3.8 类型安全和类型推导
3.9 数字字面量
3.10 数字类型的转换
3.10.1 整型间的转换
3.10.2 整型和浮点型间的转换
3.11 类型别名
3.12 布尔型
3.13 字符串和字符
3.13.1 字符串字面量
3.13.2 字符串的创建和初始化
3.13.3 字符串和字符的连接
3.13.4 字符计数
3.13.5 字符串内插
3.13.6 比较字符串
3.14 元组
3.15 可选类型
3.15.1 If语句和强制解封可选
类型
3.15.2 可选绑定
3.15.3 隐式解封可选类型
3.16 断言
3.17 集合
3.17.1 集合的可变性
3.17.2 数组的类型
3.17.3 数组字面量
3.17.4 访问和修改数组
3.17.5 数组遍历
3.17.6 数组创建和初始化
3.18 字典
3.18.1 字典字面量
3.18.2 访问和修改字典
3.18.3 字典遍历
3.18.4 创建空字典
3.19 结构体类型
3.19.1 基础数据类型都是结构体
3.19.2 结构体的定义
3.20 枚举类型
3.20.1 枚举的定义
3.20.2 通过Switch语句匹配枚
举的值
3.20.3 关联值
3.20.4 原始值
3.21 结语
第4章 离不开的运算符,丢不下的
流程控
4.1 运算符的家谱
4.2 赋值运算符
4.3 算术运算符
4.3.1 加减乘除
4.3.2 求余运算符
4.3.3 自变运算符
4.3.4 阴阳运算符
4.4 区间运算符
4.5 逻辑运算符
4.5.1 9种逻辑运算符综合演练
4.5.2 三目运算符(?:)
4.5.3 空合运算符(??)
4.5.4 特征等于运算符(===)和
特征不等运算符(!==)
4.6 位运算符
4.6.1 位求非(~)
4.6.2 位求与(&)
4.6.3 位求或(|)
4.6.4 位求异或(^)
4.6.5 移位操作
4.7 运算符专题
4.7.1 运算符里的江湖等级
4.7.2 圆括号―打破江湖规矩
的利器
4.7.3 定制自己的运算符套餐
4.8 语法界的建筑师
4.8.1 for语句
4.8.2 while循环
4.8.3 if判断
4.8.4 switch分拣
4.8.5 switch中的case专题
4.9 打破控制流程的壁垒
4.9.1 continue的用法
4.9.2 break的用法
4.9.3 return的用法
4.9.4 fallthrogh的用法
4.10 结语
第5章 语法届的高富帅之函数和闭包
5.1 写个函数来瞧瞧
5.2 函数怎么用
5.3 参数列表的奥妙
5.3.1 多参数的参数列表
5.3.2 没有参数怎么办
5.3.3 谁说参数不能有名字
5.3.4 酷炫的可变参数
5.3.5 默认参数的魅力
5.3.6 当默认参数遇上可变参数
5.3.7 参数性别是常量还是变量
5.3.8 让我变,不管函数内外
5.4 仔细分析一下返回值的各种情况
5.4.1 没返回值也行
5.4.2 一个返回值没问题
5.4.3 多返回值也可以
5.5 挖挖函数的老底
5.6 函数的高级玩法
5.6.1 函数类型的变量与常量
5.6.2 函数类型作为参数
5.6.3 函数类型作为返回值
5.7 嵌套函数
5.8 柯里化函数
5.9 闭包―牛人的玩物
5.10 闭包表达式很好用
5.11 简化闭包表达式
5.12 尾闭包
5.13 捕获值
5.14 挖挖闭包的老底
5.15 结语
第6章 Swift之面向对象
6.1 面向对象的身世之谜
6.2 Swift中的OOP
6.2.1 何为类
6.2.2 何为实例
6.2.3 何为属性
6.2.4 何为方法
6.2.5 继承者们
6.2.6 让我们构造一个类的实
例吧
6.2.7 析构―回光返照时的
精彩
6.3 一根藤上三朵花:类、结构体和
枚举
6.4 Swift内存总管―自动引用计数
(ARC)
6.4.1 强引用―霸道的关系
6.4.2 闭环与解环
6.4.3 解环妙法之弱引用
6.4.4 解环妙法之主引用
6.4.5 解环妙法之捕获列表
6.5 玩转Swift的各种类型
6.5.1 可选链―用前就知道
是不是nil哦
6.5.2 类型检查和转换
6.5.3 俄罗斯娃娃―类型里面
还有类型
6.5.4 我们都是Swift的主人―
扩展
6.5.5 用需求规划蓝图―协议
6.6 通用是一种美德―泛型
6.6.1 泛型函数
6.6.2 通用类型
6.6.3 类型约束
6.6.4 关联类型
6.7 结语
……
6.2.3.5 属性观察器
毋庸置疑,这是Chris大牛为Swift语言提供的利器,我们先看个例子。
1. class People {
2. var name: String = """"
3. var lover: People? {
4. willSet(newLover) { // lover属性值改变前被触发
5. if(self.lover != nil) {
6. if(newLover != nil) {
7. println( ""(self.name) 移情别恋了 (newLover!.name)"" )
8. }
9. } else {
10. if(newLover != nil) {
11. println( ""(self.name) 找到了糟糠之妻 (newLover!.name)"" )
12. }
13. }
14. }
15. didSet( oldLover ) { // lover属性改变后被触发
16. if (oldLover != nil) {
17. println( ""(self.name) 狠心地离开了 (oldLover!.name)"" )
18. }
19. }
20. }
21. }
22. var man = People()
23. man.name = ""陈世美""
24.
25. let lover1 = People()
26. lover1.name = ""秦香莲""
27.
28. let lover2 = People()
29. lover2.name = ""大宋公主""
30.
31. man.lover = lover1
32. man.lover = lover2
结果如下:
1. 陈世美 找到了糟糠之妻 秦香莲
2. 陈世美 移情别恋了 大宋公主
3. 陈世美 狠心地离开了 秦香莲
以上我们用大宋年间凄美的爱情剧《铡美案》中的桥段说明了如何在类中使用属性观察器,注意以下解释。
属性观察器分为两种:willSet(属性值改变前触发)和didSet(属性值改变后触发),其格式如下。
willSet( willSetValue){//willSetValue可以用户自己定义 },简化格式为:willSet{ //必须使用newValue作为参数},其中,willSetValue/newValue代表将要被使用的新值。
didSet(oldSetValue){//oldSetValue可以用户自己定义 },简化格式为:didSet{ //必须使用oldValue作为参数},其中,oldSetValue/oldValue代表已被替换的旧值。
属性观察器不能用在惰性存储属性上,道理很简单,因为惰性存储属性是根据需要产生的,所以无法确定观察有效期,从Swift语义严谨的角度,是不应被支持的。
对于可以重写的属性,可以在其子类中增加观察器,但是对于非重写属性则没有必要,因为可以在其赋值访问器中触发观察的行为。
小伙伴们,务必认真理解这两个观察器,它们的意义非凡,如果你学过Objective-C,则对KVO模式不陌生,所谓KVO,就是Key-Value-Observing的简称。简单地讲,就是你可以为一个值绑定一个回调函数,如果这个值变化,这个回调函数就会被触发。这完全就是上面讲的属性观察器的功能,这也是所谓的“观察者”模式的体现。在我们未来做iOS开发的日子里,经常希望通过一个值的改变,触发某种行为。例如,如果老码的书销量超过10万本,老码就请小伙伴吃碗蛋炒饭,那么我们就可以使用属性观察器来实现。
属性观察器同样可用于全局变量和本地变量。何为全局变量,指不包含在任何自定义的作用域里的变量,比如不包含在函数、类、枚举、结构体中的变量,反之则是本地变量。切记全局变量永远是省略lazy的惰性计算变量,而本地变量不是。小伙伴很迷糊,怎么又多了个“惰性计算”概念呢?切记这是为全局变量独有的,其意思:既是惰性,又是可计算的。惰性是为了提高全局变量使用的效率,用的时候再初始化,而不是一开始就初始化;可计算是因为全局变量没有初始化函
老码说编程之玩转Swift江湖 下载 mobi epub pdf txt 电子书 格式
老码说编程之玩转Swift江湖 下载 mobi pdf epub txt 电子书 格式 2024
老码说编程之玩转Swift江湖 下载 mobi epub pdf 电子书京东购书方便,送货快,书是正版
评分不错不错,讲得有条理,容易理解
评分总体上帮助还是挺大的,基础知识,
评分编的不错的书,合适入门。
评分正版 印刷很精致 到货很快
评分一本诙谐有趣的swift入门书,怎么说呢,有自己的想法,但是都讲的不太深。感觉目前还是oj更加大众一些
评分老码说编程之玩转Swift江湖
评分很专业的一本书 很实用的的
评分东西很好,慢慢学习中。
老码说编程之玩转Swift江湖 mobi epub pdf txt 电子书 格式下载 2024