![]()
编辑推荐 在本书中,你将从学习iOS平台的基础知识开始,这些基础知识在使用现成的iOS解决方案时经常被忽视。虽然标准的iOS解决方案可能在小型项目上有效,但的科技公司一般会对这些解决方案进行再创造,以实现高度定制化的使用,因此了解底层概念至关重要。了解这些概念可以缩短上手时间,让工程师直观地理解“为什么”。 掌握了基础知识后,接下来你将重点学习架构和设计原则,以便在大型代码库中构建、维护和发布功能,并掌握在大型组织中实施变革的软技能。你将对iOS设计模式有更深入的理解,并掌握将功能从创意转化为产品所需的行业知识。你还将学习在大型组织中完成工作所需的人际交往技能——这是个人职业发展的关键一步。 通过阅读本书,你将学会如何: ·在iOS平台上实践计算机科学和工程基础知识; ·在大型公司中应用iOS架构并推行很好实践; ·确定产品目前存在的不足,并在整个组织内达成一致; ·利用系统架构知识和行业经验,找出并解决代码库中的问题 内容推荐 本书概述了移动工程师面临的扩展挑战,以及处理这些问题的一些标准技术和设计模式。从学习iOS平台的基础知识开始,这些基础知识在使用开箱即用的iOS解决方案时经常被忽视。掌握了基础知识后,接下来将重点学习架构和设计原则,以便在大型代码库中构建、维护和发布功能,并掌握在大型组织中实施变革的软技能。读者将对iOS设计模式有更深入的了解,并掌握将功能从想法转化为产品所需的行业知识。本书还将介绍在大型组织中完成工作所需的人际交往技能——这是个人职业发展的关键一步。 目录 译者序 前言 第一部分Apple系统基础知识 第1章熟悉Swift2 1.1本章概要2 1.2结构体与类2 1.2.1探索引用类型与值类型4 1.2.2类的继承7 1.2.3协议8 1.3泛型实践10 1.3.1泛型函数11 1.3.2泛型类型11 1.4总结14 1.4.1本章要点14 1.4.2扩展阅读14 第2章内存管理15 2.1本章概要15 2.2Swift程序内存使用情况15 2.2.1栈16 2.2.2堆17 2.2.3缓冲区上溢与下溢18 2.3Swift内存模型18 2.3.1Swift栈分配18 2.3.2Swift堆分配19 2.4自动引用计数20 2.4.1引用计数实践21 2.4.2ARC观察生命周期的bug25 2.5方法派发25 2.5.1静态派发26 2.5.2动态派发26 2.5.3支持值类型的多态性27 2.5.4应用内存管理31 2.6总结32 2.6.1本章要点32 2.6.2扩展阅读32 第3章iOS持久化选项33 3.1概述33 3.2iOS持久化选项介绍34 3.2.1保存到文件34 3.2.2NSUserDefaults35 3.2.3钥匙串37 3.2.4CoreData38 3.2.5深入探索SQLite41 3.3案例:缓存PhotoStream48 3.3.1高效地获取图片56 3.3.2在应用程序启动过程中持久化缓存图片56 3.3.3封装缓存解决方案56 3.3.4小结57 3.4总结57 3.4.1本章要点58 3.4.2扩展阅读58 第4章并发编程59 4.1概述59 4.2并发、并行还是异步60 4.2.1并发60 4.2.2多线程60 4.2.3并行60 4.2.4异步编程61 4.2.5这将通往何方61 4.3并发成本62 4.3.1线程成本62 4.3.2管理状态共享63 4.3.3难以调试63 4.4实现并发63 4.4.1线程和锁63 4.4.2使用GCD和调度队列66 4.4.3Operation队列70 4.4.4Swift并发70 4.4.5深入探讨:实现并发的挑战76 4.5现实应用程序中的考量79 4.5.1案例1:扩展Meta的NewsFeed79 4.5.2案例2:构建Swift并发81 4.6总结81 4.6.1本章要点82 4.6.2扩展阅读82 第二部分应用程序架构和设计模式 第5章优质架构的重要性84 5.1概述84 5.2定义优质架构85 5.3模块化87 5.3.1模块化案例研究88 5.3.2模块化总结90 5.4可测试性90 5.4.1测试案例研究90 5.4.2可测试性总结92 5.5选择一个架构92 5.6总结92 5.6.1本章要点93 5.6.2扩展阅读93 第6章常见的设计模式94 6.1概述94 6.2为什么设计模式是程序设计的基石95 6.3设计模式95 6.3.1总体主题95 6.3.2代理模式96 6.3.3外观模式(结构型)99 6.3.4建造者模式101 6.3.5工厂模式106 6.3.6单例模式110 6.3.7依赖注入112 6.3.8协调器模式115 6.3.9观察者模式121 6.4总结126 6.4.1本章要点126 6.4.2扩展阅读126 第7章MVC架构127 7.1概述127 7.2深入探讨MVC127 7.2.1MVC组件128 7.2.2组件间的交互129 7.2.3MVC示例130 7.2.4讨论138 7.3总结146 7.3.1本章要点146 7.3.2扩展阅读146 第8章MVVM147 8.1概述147 8.2深入探讨MVVM147 8.2.1MVVM组件149 8.2.2组件间的交互150 8.2.3MVVM示例151 8.2.4讨论156 8.3总结158 8.3.1本章要点159 8.3.2扩展阅读159 第9章VIPER160 9.1概述160 9.2深入探讨VIPER161 9.2.1VIPER组件161 9.2.2组件间的交互162 9.2.3VIPER示例163 9.2.4讨论174 9.3总结175 9.3.1本章要点176 9.3.2扩展阅读176 第10章响应式编程范式177 10.1概述177 10.2响应式编程177 10.2.1游戏规则178 10.2.2数据传播技术180 10.2.3与可变状态的交互182 10.3函数响应式编程183 10.3.1范畴论184 10.3.2函子185 10.3.3幺半群185 10.3.4单子186 10.4FRP与Combine187 10.4.1发布者与订阅者187 10.4.2Combine的行为188 10.4.3应用程序架构188 10.5响应式编程与函数响应式编程的益处191 10.6总结192 …… |