搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Swift:面向协议编程
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121301957
  • 作      者:
    陈刚编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2017
收藏
编辑推荐

面向协议编程包含了Swift标准库的核心思想,为代码的健壮性和灵活性提供了良好的支持。

本书由浅入深,详细阐述了如何面向协议编程,实例丰富,值得一读。

展开
作者简介

陈刚(微博@Cwift),《Swift开发手册:技巧与实战》作者,SwiftGG翻译组成员,CSDN 博客专家。曾担任 GMTC 2016 Workshop专场讲师,一个生活上充满活力,技术上严肃认真的Swifter,正在努力挖掘Swift的强大潜力。

展开
内容介绍

《Swift:面向协议编程》第1章简要介绍了Swift 的发展历史以及Swift 开发工具的获取途径。第2章介绍了Swift 的基础语法,细致讲解了面向协议编程中至关重要的协议扩展用法与泛型优化。第3章讲解了Swift 的进阶语法,从语言层面深入到内存层面,对Swift 的特性进行了剖析,帮助读者写出更加Swift 化的代码。第4章通过一个完整的计算器Demo 指导读者快速完成一个iOS 应用的开发,熟悉Xcode 的使用,理解经典的MVC 编程模式。第5章通过一个备忘录Demo,将传统的MVC、MVVM 思想构建的程序与基于协议构建的程序进行了多个维度的对比,揭开了面向协议编程思想的神秘面纱,教会读者如何在实际工作中应用面向协议编程思想。

展开
精彩书评

面向协议编程包含了Swift标准库的核心思想,也为新时代的开发者提供了稳定且灵活的编程范式。本书从基础入手,结合实践,全方位阐释了面向协议的开发方式,是一本值得Swift开发者研读的优秀书籍。


             LINE iOS开发工程师,ObjC中国组织者 王巍(onevcat) 


Swift必将取代Objective-C成为苹果开发的主流,而且这个时间不会太久。我很高兴看到这样一本Swift书籍面世,为在国内推广Swift贡献一份力量。本书由浅入深,探索Swift语言之美,挖掘语法特性、编程范式背后的设计思想,实例丰富,是一本优秀的Swift语言学习书籍。


——InfoQ移动主编 徐川 


Swift支持多种编程方式,特别是面向协议编程为代码的健壮性和灵活性提供了良好的支持。这是一门现代的语言,探索这门语言的更加“脑洞”的实践性是件很有趣的事情。本书从基础到实践,为开发者阐述了如何面向协议编程,值得入手。


——<T> 沙龙负责人、InfoQ 社区主编  靛青K 


展开
精彩书摘

推荐序

很高兴因为认识陈刚这位优秀的朋友,有幸让自己的文字能够呈现在读者面前,每一个字都显得很珍贵。

这是一本介绍 Swift 语言的书。说起编程语言,这些年也广泛地涉猎过诸多语言。从初中时开始接触 VB,写一些小程序,然后发送给朋友们。那时的 VB 看起来就像数学公式一样。现在回头一看,可视化的界面编辑也正像 Xcode 的 Interface Builder 一样。到后来接触了算法竞赛,开始写一些Pascal,告别了图形化界面,在 Turbo Pascal 的蓝屏背景下写一些begin、end、readln、writeln。后来去外面参加竞赛,考卷有三种语言选择:Pascal、C、C++。当大部分人用 Pascal 的时候,有少数几个人用 C、C++考试,而监考老师发卷到他们那里的时候也会说好厉害。于是潜意识中,觉得 C、C++ 是比 Pascal 更加厉害的语言。于是学了一年Pascal 的我再度归零,拿起了谭浩强老师编写的《C 程序设计》。C 语言让我感觉很简洁,同时接触了指针、内存管理、字符串库。比起 Pascal,C 代码让我觉得是那样简洁、优雅。每一个字符都有它的力量,无法去掉、无法再简洁了。用它来写深度搜索、图论、二叉树算法,然后去在线评测系统提交代码,再优化优化,接着代码效率能上排名榜的第一页,是一个15 岁少年所能期待的最美好的事情。

接着读起了刘汝佳前辈的《算法竞赛入门经典》一书,感慨语言之上,还能实现那么多算法,解决一个又一个的问题。就像这本书一样,前面的语言章节仅是铺垫,后面的 iOS 开发章节才是高潮。精通一门语言,然后用它去开发各种灿烂的iOS 应用,才是高潮。

算法陪我度过了高中。高考之后,我读了《黑客与画家》一书,对 Lisp 语言崇拜不已,于是就学了 Lisp。在2013 年到 2015 年,又陆续学了 Java、Clojure、JavaScript、Objective-C 和Swift。

后来创业做 Reviewcode.cn,又学了PHP、 CSS 和 HTML。开始更多地知道后端系统里,语言起着怎样的作用。后来到了新公司,担任 Go 后端工程师。又在一个星期内学了 Go,并用它做了抢/发红包、充值的 API 接口,协调移动端同时上线了。

当用过很多语言后,你会发现很容易上手一门新语言,并快速用来干活。最近我也重新起航创业了,创立了趣直播——一个知识直播平台,孙源Sunny、iOS 程序猿都来直播过,可到我们的公众号“平方根平台”来看看,也可加我的微信“lzwjava”来交流产品或技术。

初识Swift 的原因是公司准备把 Objective-C 示例应用用Swift 重写。重写是件挺无聊的事情,于是只重写了觉得有趣的部分,其他代码都用GitHub 上的Objective-C 转 Swift 的程序先转一遍,然后再去修复。将Objective-C 自动转成Swift,在Swift 1.0 版本时还很好用,不用修复。可惜我当时用的时候,已经是Swift 1.2 版本了。算是给本书提供了一个 Swift 语法多变的真实例子吧。

后来用 Swift 做了微图项目,旨在模仿国外的 imgur,展示互联网上最热门的图,接触到了extension、protocal、enum。再后来尝试用 Swift 写了一个 HTML Parser,比如从一大堆 HTML中解析 class=&quot;btn-blue&quot; 的 div 出来, 从而对 Swift 字符串处理、错误处理、AnyObject 有了更深入的了解。

Swift 中的 map、flatMap、filter,这些是 Lisp 系语言函数的基础,通常用它们来构造更高阶的函数。比如下面的clojure 代码片段,从 map 中获取 values 对应的keys:

(let [m {:x 1 :y 2 :z 3}

vset #{2 3}]

(map first (filter (comp vset last) m)))

;;=&gt; (:y :z)

很高兴 Swift 有这么多函数式的语法支持,函数式语言很擅长处理数据转换,很优雅也很强大,想想上面的几行代码用其他语言实现需要多写多少代码吧?

我是早前于 SwiftGG 的一次聚餐中认识作者陈刚兄的,后续时有交流。虽然不能经常见面,但互相欣赏、惺惺相惜。希望未来有机会和陈刚兄一起共事。

本书通读下来,不禁对陈刚兄做事的认真感到佩服。相信他能带领大家进入 Swift 的世界,掌控这门语言,写出各种灿烂的应用!

 ——趣直播创始人 李智维

展开
目录

第1章  搭建Swift开发环境

1.1  Swift介绍

1.1.1  Swift的前世今生

1.1.2  Swift与Objective-C

1.2  Mac OS X操作系统

1.3  Xcode简介和获取方法

1.3.1  Xcode简介

1.3.2  playground简介

1.3.3  Xcode的获取方法

1.4  iPhone SDK简介

第2章  Swift基础语法

2.1  基础知识

2.1.1  命名规则

2.1.2  常量与变量

2.1.3  类型推测

2.1.4  注释

2.1.5  输出常量和变量

2.2  基本数据类型

2.2.1  整数

2.2.2  浮点数

2.2.3  布尔类型

2.2.4  元组类型

2.2.5  可选型

2.3  基本运算符

2.3.1  赋值运算符

2.3.2  数值运算

2.3.3  自增和自减运算

2.3.4  复合赋值

2.3.5  比较运算

2.3.6  三元运算符

2.3.7  逻辑运算符

2.3.8  范围

2.3.9  括号优先级

2.4  字符串与字符

2.5  集合类型

2.5.1  数组

2.5.2  集合

2.5.3  字典

2.6  控制流

2.6.1  for循环

2.6.2  while循环

2.6.3  if判断语句

2.6.4  guard判断语句

2.6.5  switch开关语句

2.7  函数

2.8  闭包

2.9  Swift三杰——类、结构体、枚举

2.9.1  Swift三杰简介

2.9.2  值引用与类型引用

2.9.3  类

2.9.4  结构体

2.9.5  枚举

2.10  属性

2.10.1  存储属性

2.10.2  计算属性

2.10.3  属性观察器

2.10.4  类型属性

2.11  方法

2.12  下标

2.13  继承

2.14  构造与析构

2.14.1  构造器

2.14.2  析构器

2.15  类型检查与类型转换

2.15.1  类型检查

2.15.2  类型转换

2.16  类型嵌套

2.17  扩展

2.17.1  扩展计算属性

2.17.2  扩展构造器

2.17.3  扩展方法

2.17.4  扩展下标

2.18  协议

2.18.1  声明协议

2.18.2  遵守协议

2.18.3  实现协议

2.18.4  实现扩展

2.18.5  协议扩展补充

2.18.6  协议的继承

2.19  泛型

2.19.1  节点泛型

2.19.2  泛型协议

2.19.3  泛型对象

2.19.4  泛型方法

2.19.5  协议中的where关键字

2.19.6  泛型特化

2.20  Swift语法补充

2.20.1  断言

2.20.2  precondition

第3章  Swift进阶语法

3.1  再谈可选型

3.1.1  可选型

3.1.2  为什么要用可选型

3.1.3  解包可选型

3.1.4  可选绑定

3.1.5  可选链

3.1.6  可选型中的map和flatMap

3.1.7  Swift中的错误处理

3.1.8  隐式解包

3.1.9  关于可选型的思考

3.2  同构与异构

3.2.1  数据源中的同构与异构

3.2.2  AnyObject/Any简介

3.2.3  AnyObject的使用

3.2.4  AnyObject与id的对比

3.3  数组方法的探究

3.3.1  filter方法

3.3.2  map和flatMap方法

3.3.3  reduce方法

3.3.4  sort(sorted)方法

3.3.5  Side-Effect与forEach方法

3.3.6  contains方法

3.3.7  indexOf(index(of:))方法

3.3.8  prefix、suffix系方法

3.3.9  dropFirst、dropLast方法

3.3.10  Slice

3.3.11  RangeReplaceableCollectionType

3.3.12  数组的底层协议

3.3.13 带下标的数组遍历

3.3.14  Demo演示

3.4  Objective-C兼容性

3.4.1  类型桥接

3.4.2  OC和Swift的设计区别

3.5  Swift内存管理

3.5.1  栈和堆

3.5.2  值类型和引用类型

3.5.3  Copy-on-Write

3.5.4  利用引用类型的“共享”

3.5.5  ARC(自动引用计数)

3.5.6  循环引用

3.5.7  弱引用与无主引用

3.5.8  柯里化与方法参数中的闭包

3.5.9  @noescape与@autoclosure

3.5.10  静态派发和动态派发

3.5.11  协议类型的存储属性

3.5.12  静态多态与动态多态

3.5.13  泛型特化

3.5.14  小结

3.6 模式匹配

3.6.1  模式匹配简介

3.6.2  枚举的模式匹配

3.6.3  元组的模式匹配

3.6.4  if和guard中的模式匹配

3.6.5  for中的模式匹配

3.6.6  模式匹配中的where关键字

第4章  iOS开发入门

4.1  iOS系统初探

4.1.1  核心OS(Core OS)层

4.1.2  核心服务(Core Services)层

4.1.3  媒体(Media)层

4.1.4  Cocoa Touch层

4.2  MVC模式

4.2.1  MVC简介

4.2.2  iOS中的MVC

4.3  新建一个Swift工程

4.4  认识Interface Builder

4.5  构建计算器界面

4.5.1  使用对象库中的对象

4.5.2  使用检查器设置对象

4.5.3  尝试运行程序

4.5.4  添加约束

4.5.5  关联代码

4.5.6 完善按键

4.6  实现计算器逻辑

4.6.1 补全键盘

4.6.2 给键盘添加约束

4.6.3 实现数字显示功能

4.6.4  实现运算逻辑

4.7  修改计算器为MVC模式

4.8  NSNotification

4.8.1  NSNotification简介

4.8.2  addObserver方法

4.8.3  addObserverForName方法

4.8.4  postNotification方法

4.8.5  Swift 3.0中的Notification

4.9  AutoLayout快速入门

4.9.1  边距与距离

4.9.2  中心与对齐

4.9.3  尺寸与比例

4.9.4  绝对位置与挤压

第5章  面向协议编程

5.1  继承与组合

5.2  搭建页面

5.3  创建storyboard对应的子类

5.4  创建模型

5.5  串联MVC

5.6  MVVM

5.7  图解MVC与MVVM

5.8  MVC面向协议化

5.9  MVC多态优化

5.10  快速开发

5.11  组合

5.12  交互

5.13  搜索

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证