北京时间2013年9月19日凌晨1点,苹果公司发布了*新的iOS 7。此次*大的变化是UI设计风格,苹果放弃了以前的拟物化设计,转而采用扁平化设计。《iOS开发指南:从零基础到App Store上架》是在iOS 7发布之前出版的,上市后得到了广大读者的认可,同时我们也得到很多读者的反馈,希望将这本书升级为iOS 7版本。经过几个月的努力,我们终于在2014年元旦之前将书稿更新完毕。
内容和组织结构
本书是我们团队编写的iOS系列图书之一,目的是使具有Objective-C基础的程序员通过学习本书,从零基础学习如何在App Store上发布一款应用。全书共4部分。
**部分为基础篇,共13章内容,介绍了iOS的一些基础知识。
第1章介绍了iOS的开发背景以及本书约定。
第2章使用故事板技术创建了HelloWorld,同时讨论了iOS工程模板、应用的运行机制和生命周期、视图器的生命周期等,*后介绍了如何使用API帮助文档和官方案例。
第3章首先说明了视图和控件之间的关系以及应用界面的构建层次,然后介绍了标签、按钮、文本框和导航栏等基本控件,接着介绍了屏幕布局的内容以及一个较为复杂的控件——选择器,*后探讨了iOS中的集合视图。
第4章探讨了表视图的组成、表视图类的构成和表视图的分类,使读者对表视图有一个整体上的认识。接下来介绍了如何实现简单表视图和分节表视图,以及表视图中索引、搜索栏和分组的使用,然后讲解了如何对表视图单元格进行删除、插入、移动等操作,*后介绍了表视图UI设计模式方面的内容。
第5章讨论了如何判断应用是否需要一个导航功能,并且知道在什么情况下选择平铺导航、标签导航、树形结构导航,或者同时综合使用这3种导航模式。
第6章讨论了iOS开发中4种常用的设计模式,分别为单例模式、委托模式、观察者模式和MVC模式。在介绍每种设计模式时,我们按照问题提出、实现原理、应用案例的结构介绍了其适用情况、实现原理及其用法。
第7章首先介绍了iPhone和iPad设备使用场景上的差异,然后深入介绍了iPad专用API,包括UIPopoverController控制器和UISplitViewController控制器。
第8章**介绍了iOS平台的分层架构设计。
第9章介绍了iOS 7中的文字排版和渲染引擎Text Kit,以及如何利用Text Kit技术实现文本图片混合排版,设置动态字体。
第10章介绍了设置和配置的概念,然后通过对二者差异的探讨,介绍了什么样的项目适合放在设置里,什么样的项目适合放在配置里。
第11章介绍了国际化概念、内容和目录结构,并详细阐述了文本信息、nib及故事板、资源文件的国际化。
第12章讨论了iOS本地数据持久化的问题。首先分析了数据存取的几种方式以及每种数据存取方式适合什么样的场景,然后分别举例介绍了每种存取方式的实现。
第13章首先介绍了访问通讯录所需要的框架,然后介绍了使用AddressBook框架如何读取联系人的信息,具体包括联系人记录、单值多值属性、图片属性的读取;接着介绍了如何使用该框架将联系人信息写入数据库,具体包括联系人的创建、修改和删除;*后介绍了如何使用AddressBook**API实现选择联系人、显示和修改联系人以及创建联系人的操作。
第二部分为网络篇,共两章,介绍了iOS网络开发的相关知识。
第14章介绍了数据交换格式,其中XML和JSON是主要的方式。这一章**介绍了Web Service的访问以及ASIHTTPRequest框架。
第15章讨论了iOS中的定位服务技术,包括地理信息编码和反编码查询。之后介绍了iOS 6苹果地图的使用,包括了显示地图、在地图上添加标注以及跟踪用户位置的变化等。*后,介绍了程序外地图的使用,如何调用iOS 6苹果地图和谷歌Web地图。
第三部分为进阶篇,共7章,主要介绍了iOS**内容和商业思考等。
第16章介绍了从iOS 6升级到iOS 7带来的变化、遇到的困难以及解决的方法。
第17章介绍了iOS中的商业模式,其中的收费策略值得广大读者借鉴。此外,还介绍了植入广告和应用内购买的API,其中植入广告包括苹果自己的iAd和谷歌的AdMob广告。
第18章首先介绍了一些常用的调试工具、异常堆栈报告分析,接下来讲解了如何在真机上调试应用,*后分析了Xcode设备管理工具的用法。
第19章讨论了测试驱动的iOS开发,介绍了测试驱动开发流程。此外,还介绍了单元测试框架OCUnit、GHUnit和OCMock的用法。
第20章介绍了iOS中的性能优化方法,其中包括内存优化、资源文件优化、延迟加载、持久化优化、使用可重用对象、多线程以及程序编译参数等。
第21章介绍了如何使用Git进行代码版本控制,其中包括Git服务器的搭建、Git常用命令和协同开发。此外,还介绍了在Xcode中如何配置和使用Git工具。
第22章探讨了如何在App Store上发布应用,介绍了应用的发布流程以及应用审核不通过的一些常见原因。
第四部分为实战篇,共两章,从无到有地介绍了两个真实的iOS应用:MyNotes应用和2016里约热内卢奥运会应用。
第23章通过重构MyNotes应用,把MyNotes应用的数据由原来的本地存储变成云存储。在这个过程中,我们介绍了移动网络通信应用中分层架构设计的必要性和重要性,**介绍了基于委托模式和观察者模式通知机制实现的分层架构设计。
第24章介绍了完整的iOS应用分析设计、编程、测试和发布过程,其中采用了敏捷开发方法。此外,该项目采用分层架构设计,这对于学习iOS架构是非常重要的。
书中并没有包括多媒体等知识,我们会在另外一本介绍iOS游戏开发的书中介绍,具体进展请读者关注我们智捷iOS课堂官方网站http://www.51work6.com。
本书网站
为了更好地为广大读者提供服务,我们专门为本书建立了一个网站http://www.iosbook1.com,大家可以查看相关出版进度,并对书中内容发表评论,提出宝贵意见。
源代码
书中包括了100多个完整的案例项目源代码,大家可以到本书网站http://www.iosbook1.com下载,或者到图灵社区(www.iTuring.cn)本书主页免费注册下载。
勘误与支持
我们在网站http://www.iosbook1.com中建立了一个勘误专区,可以及时地把书中的问题、失误和纠正反馈给广大读者。如果你发现了任何问题,均可以在网上留言,也可以发送电子邮件到eorient@sina.com,我们会在**时间回复你。此外,你也可以通过新浪微博与我们联系,我的微博为@tony_关东升 。
致谢
在此感谢图灵的王军花责编给我们提供的宝贵意见,感谢智捷iOS课堂团队的李玉超和贾云龙参与内容讨论和审核,感谢赵大羽老师手绘了书中全部草图,并从专业的角度修改书中图片,力求更加真实**地奉献给广大读者。此外,还要感谢我的家人容忍我的忙碌,以及对我的关心和照顾,使我能抽出这么多时间,投入全部精力专心编写此书。
由于时间仓促,书中难免存在不妥之处,请读者原谅。
关东升
2013年12月于北京