北京时间2014年6月2日凌晨1点,苹果公司发布了最新的iOS 8系统。此次,最令人震撼的消息是苹果的新语言Swift。而iOS开发者和感兴趣者立即开始研究和学习Swift语言,我们智捷课堂团队在2014年6月9日推出一套完整的Swift学习视频,接着又与图灵教育合作,推出国内第一本Swift图书——《Swift开发指南》,并且在2014年8月1日推出了《Swift开发指南(修订版)》。在这个大背景下,我们原来编写的《iOS开发指南:从零基础到App Store上架》得到了广大读者的认可,很多读者希望我们将其升级为iOS 8版本,并且能够使用Swift和Objective-C两种语言进行讲解,并比较它们的不同之处。几个月过去了,我们终于在2015年元旦之前将书稿提交给出版社。
内容和组织结构
本书是我们团队编写的iOS系列丛书中的一本,目的是使有Swift或Objective-C基础的程序员通过学习本书,从零基础学习如何在App Store上发布一款应用。全书共4部分。
第一部分为基础篇,共14章内容,介绍了iOS的一些基础知识。
第1章介绍了iOS的开发背景以及本书约定。
第2章使用故事板技术创建了HelloWorld,同时讨论了iOS工程模板、应用的运行机制和生命周期、视图的生命周期等,最后介绍了如何使用API帮助文档和官方案例。
第3章首先学习了视图和控件之间的关系以及应用界面的构建层次,然后介绍了标签、按钮、文本框和导航栏等基本控件。
第4章介绍了iOS 8多分辨率屏幕适配方法,其中涉及的技术主要是Auto Layout和Size Class。此外,还介绍了iOS屏幕的多样性、iOS屏幕布局相关的内容。
第5章首先向大家介绍了数据源协议和委托协议,然后介绍了高级视图:选择器和集合视图。
第6章探讨了表视图的组成、表视图类的构成和表视图的分类,使我们对表视图有了一个整体上的认识。接下来,介绍了如何实现简单表视图和分节表视图,以及表视图中索引、搜索栏和分组的使用,然后学习了如何对表视图单元格进行删除、插入、移动等操作,最后介绍了表视图UI设计模式方面的内容。
第7章讨论了如何判断应用是否需要一个导航功能,并且知道在什么情况下选择平铺导航、标签导航、树形结构导航,或者同时综合使用这3种导航模式。
第8章讨论了iOS开发中4种常用的设计模式,分别为单例模式、委托模式、观察者模式和MVC模式。在介绍每种设计模式时,我们按照问题提出、实现原理、应用案例的结构介绍了其适用情况、实现原理及其用法。
第9章首先介绍了iPhone和iPad设备使用场景上的差异,然后深入介绍了iPad专用API,包括UIPopover- Controller控制器和UISplitViewController控制器。
第10章介绍了iOS平台的分层架构设计技术,归纳了10种分层模式,并且重点实现了8种模式,每一种模式都有其应用场景。
第11章讨论了iOS本地数据持久化的问题。首先分析了数据存取的几种方式以及每种数据存取方式适合什么样的场景,然后分别举例介绍了每种存取方式的实现。
第12章介绍了设置和配置的概念,然后通过对二者差异的探讨,介绍了什么样的项目适合放在设置里,什么样的项目适合放在配置里。
第13章首先介绍了国际化的概念,接下来详细阐述了文本信息、xib及故事板、资源文件的国际化。
第14章首先介绍了访问通讯录所需要的框架,然后介绍了使用AddressBook框架如何读取联系人的信息,具体包括联系人记录、单值多值属性、图片属性的读取;接着介绍了如何使用该框架将联系人信息写入数据库,具体包括联系人的创建、修改和删除;最后介绍了如何使用AddressBook高级API实现选择联系人、显示和修改联系人以及创建联系人的操作。
第二部分为网络篇,共两章,介绍了iOS网络开发的相关知识。
第15章介绍了数据交换格式,其中XML和JSON是主要的方式。这里重点介绍了Web Service的访问以及MKNetworkKit框架。
第16章讨论了iOS中的定位服务技术,包括地理信息编码和反编码查询。之后介绍了iOS苹果地图的使用,包括显示地图、在地图上添加标注以及跟踪用户位置的变化等。最后,介绍了程序外地图的使用,如何调用iOS苹果地图和谷歌Web地图。
第三部分为进阶篇,共6章,介绍了iOS高级内容和商业思考等,相关内容如下所示。
第17章介绍了iOS中的商业模式,其中的收费策略值得广大读者借鉴。此外,我们还介绍了植入广告和应用内购买的API,其中植入广告包括苹果自己的iAd和谷歌的AdMob广告。
第18章首先介绍了调试工具、异常堆栈报告分析,接下来讲解了如何在真机上调试应用,最后分析了Xcode设备管理工具的用法。
第19章首先介绍了测试驱动的iOS开发,接着介绍了单元测试框架XCTest、异步单元测试和性能测试,最后讨论了iOS单元测试最佳实践。
第20章介绍了iOS中的性能优化方法,其中包括内存优化、资源文件优化、延迟加载、持久化优化、使用可重用对象、并发处理与多核CPU等。
第21章介绍了如何使用Git进行代码版本控制,其中包括Git服务器的搭建、Git常用命令和协同开发。此外,还介绍了在Xcode中如何配置和使用Git工具。
第22章探讨了如何在App Store上发布应用,介绍了应用的发布流程以及应用审核不通过的一些常见原因。
第四部分为实战篇,共两章,从无到有地介绍了两个真实的iOS应用:MyNotes应用和2016里约热内卢奥运会应用。
第23章通过重构MyNotes应用,把MyNotes应用的数据由原来的本地存储变成云存储。在这个过程中,我们介绍了移动网络通信应用中分层架构设计的必要性和重要性。我们重点介绍了基于委托模式和观察者模式通知机制实现的分层架构设计。
第24章介绍了完整的iOS应用分析设计、编程、测试和发布过程,其中采用了敏捷开发方法。此外,该项目采用分层架构设计,这对于学习iOS架构是非常重要的。
致谢
在此感谢图灵的王军花责编给我们提供的宝贵意见,感谢智捷iOS课堂团队的李玉超和贾云龙参与内容讨论和审核,感谢赵大羽老师手绘了书中全部草图,并从专业的角度修改书中图片,力求更加真实完美地奉献给广大读者。此外,还要感谢我的家人容忍我的忙碌,以及对我的关心和照顾,使我能抽出这么多时间,投入全部精力专心编写此书。
由于时间仓促,书中难免存在不妥之处,请读者原谅。
关东升
2014年12月于北京