前  言

北京时间2015年9月16日凌晨,苹果公司正式推出了iOS 9系统。此次,Swift 2.0也正式推出,Swift经过一年的发展已经非常健壮了,很多项目也转而使用Swift语言开发,但是很多老项目还使用Objective-C语言开发。在这个大背景下,我们原来编写的《iOS开发指南:从零基础到App Store上架》得到了广大读者的认可,并且很多读者希望我们将其升级为iOS 9版本。几个月过去了,我们终于在2016年春节之前将书稿提交给出版社。

内容和组织结构

本书是我们团队编写的iOS系列丛书中的一本,目的是使有Swift或Objective-C基础的程序员通过学习本书,从零基础学习如何在App Store上发布一款应用。全书共5部分。

第一部分为基础篇,共9章,介绍了iOS的一些基础知识。

第1章介绍了iOS的开发背景以及本书约定。

第2章使用故事板技术创建了HelloWorld,同时讨论了iOS工程模板、应用的运行机制和生命周期、视图的生命周期等,最后介绍了如何使用API帮助文档和官方案例。

第3章重点介绍了Cocoa Touch框架中构建界面的相关类,重点介绍了构建界面的3种技术:故事板、XIB和纯代码。

第4章重点介绍了标签、按钮、文本框、文本视图、开关、滑块、分段控件、网页控件、活动指示器、进度条、警告框、操作表、工具栏、导航栏等基本控件。而且,每个示例都采用故事板和纯代码这两种方式实现。

第5章介绍了数据源协议和委托协议,然后介绍了高级视图:选择器和集合视图。

第6章探讨了表视图的组成、表视图类的构成和表视图的分类,使我们对表视图有了一个整体上的认识。接下来,该章介绍了如何实现简单表视图和分节表视图,以及表视图中索引、搜索栏和分组的使用,然后学习了如何对表视图单元格进行删除、插入、移动等操作,最后介绍了表视图UI设计模式方面的内容。

第7章介绍了iOS多分辨率屏幕适配方法,其中涉及的技术主要是Auto Layout和Size Class。此外,该章还介绍了iOS 9堆视图StackView、iOS屏幕的多样性、iOS屏幕布局相关的内容。

第8章讨论了如何判断应用是否需要一个导航功能,并且知道在什么情况下选择平铺导航、标签导航、树形结构导航,或者同时综合使用这3种导航模式。

第9章首先介绍iPhone和iPad设备使用场景上的差异,然后介绍了iPad树形结构导航、iPad模态视图和Popover视图,最后介绍了iOS 9分屏多任务。

第二部分为设计与架构篇,共3章,介绍了iOS设计与架构的相关知识。

第10章讨论了iOS开发中4种常用的设计模式,分别为单例模式、委托模式、观察者模式和MVC模式。在介绍每种设计模式时,我们按照问题提出、实现原理、应用案例的结构介绍了其适用情况、实现原理及用法。

第11章我们介绍了iOS平台的分层架构设计技术,归纳了16种分层模式,并且重点实现了9种模式,这些架构设计模式将贯穿全书(包括项目实战篇中的项目),希望读者能够重点学习。

第12章讨论了iOS本地数据持久化的问题。首先,该章分析了数据存取的几种方式以及每种数据存取方式适合什么样的场景,然后分别举例介绍了每种存取方式的实现。

第三部分为进阶篇,共7章,介绍了iOS的一些高级知识。

第13章介绍了设置和配置的概念,然后通过对二者差异的探讨,介绍了什么样的项目适合放在设置里,什么样的项目适合放在配置里。

第14章介绍了本地化的概念、内容和目录结构,并详细阐述了文本信息、XIB及故事板、资源文件的本地化。从技术角度看,应用程序的本地化比较简单,但是工作量大而且比较烦琐。

第15章介绍了iOS 9中新的访问通讯录框架——Contacts框架,然后介绍了如何使用该框架访问联系人信息、写入联系人信息等。最后,该章还介绍了如何使用ContactsUI框架提供系统界面,实现选择联系人、显示和修改联系人以及创建联系人的操作。

第16章重点介绍了数据交换格式,其中主要是介绍XML和JSON。

第17章介绍了Web Service,并重点讨论了REST风格Web Service,其中具体访问Web Service的API包括:NSURLSession、AFNetworking框架和Alamofire框架。

第18章讨论了iOS中的定位服务技术,包括地理信息编码和反编码查询。此外,该章还介绍了苹果的微定位技术iBeacon。

第19章讨论了iOS苹果地图的使用,包括显示地图、添加标注以及跟踪用户位置变化等。最后,我们介绍了程序外地图的使用。

第四部分为测试、调试和优化篇,共4章,介绍了iOS高级内容,包括测试、调试和优化等相关知识。

第20章首先介绍了iOS中都有哪些调试工具并重点介绍了几个常用的工具,具体包括日志与断言的输出、异常栈报告分析,接着讲解了如何在设备上调试应用,最后分析了Xcode设备管理工具的使用。

第21章讨论了测试驱动的iOS开发、测试驱动开发流程、单元测试框架XCTest,以及如何基于分层架构进行单元测试。

第22章首先介绍了iOS 9中提供的UI测试框架,最后介绍了如何基于分层架构进行UI测试。

第23章介绍了iOS中的性能优化方法,其中包括内存优化、资源文件优化、延迟加载、持久化优化、使用可重用对象、并发处理与多核CPU等。

第五部分为实战篇,共5章,首先介绍了iOS项目开发过程中的相关技术,包括代码版本管理、项目依赖管理以及App Store发布流程,最后从无到有地介绍了两个真实的iOS应用:MyNotes应用和2016里约热内卢奥运会应用。

第24章介绍了如何使用Git进行代码版本控制,其中包括Git服务器的搭建、Git常用命令和协同开发。此外,该章还介绍了在Xcode中如何配置和使用Git工具。

第25章讨论了iOS和OS X项目依赖管理工具,其中包括CocoaPods和Carthage。

第26章通过重构MyNotes应用,把MyNotes应用的数据由原来的本地存储变成云存储。在这个过程中,我们介绍了移动网络通信应用中分层架构设计的必要性和重要性。该章还重点介绍了基于委托模式和观察者模式通知机制实现的分层架构设计。

第27章探讨了如何在App Store上发布应用,介绍了应用的发布流程以及应用审核不通过的一些常见原因。

第28章介绍了完整的iOS应用分析设计、编程、测试和发布过程,其中采用了敏捷开发方法。此外,该项目采用分层架构设计,这对于学习iOS架构是非常重要的。

书中并没有包括多媒体等知识,我们会在另外一本iOS开发书中介绍,具体进展请读者关注智捷iOS课堂官方网站:http://www.51work6.com。

本书服务网址

为了更好地为广大读者提供服务,我们专门为本书建立了一个服务网址www.51work6.com/book/ios14.php,大家可以查看相关出版进度,并对书中内容发表评论,提出宝贵意见。

源代码

书中包括了100多个完整的案例项目源代码,大家可以到本书网站www.51work6.com/book/ios14.php下载或者到图灵社区(iTuring.cn)本书主页免费注册下载。

免费相关视频

为了使广大读者能够快速学习本书,智捷课堂给广大读者提供了此书相关的免费视频,具体包括:从零开始学Swift、从零开始学Objective-C以及部分iOS相关视频。读者凭书中夹带的书签下方的优惠码,就可以购买价值50元内视频课程。具体使用说明:首先在智捷课堂视频平台(www.zhijieketang.com)上注册并登录,然后找到相应课程,接着选择页面中的“购买课程”→“去支付”→“输入优惠码”→“使用”即可。

勘误与支持

我们在网站www.51work6.com/book/ios14.php中建立了一个勘误专区,希望及时地把书中的问题、失误和纠正反馈给广大读者。如果你发现了任何问题,均可以在网上留言,也可以发送电子邮件到eorient@sina.com,我们会在第一时间回复你。此外,你也可以通过新浪微博与我联系,我的微博为:@tony_关东升 。

致谢

在此感谢图灵的王军花责编给我们提供的宝贵意见,感谢智捷iOS课堂团队的赵志荣参与内容讨论和审核,感谢赵大羽老师手绘了书中全部草图,并从专业的角度修改书中图片,力求更加真实完美地奉献给广大读者。此外,还要感谢我的家人容忍我的忙碌,以及对我的关心和照顾,使我能抽出这么多时间,投入全部精力专心编写此书。

由于时间仓促,书中难免存在不妥之处,请读者原谅。

关东升

2016年2月于北京

目录

  • 前  言
  • 第一部分 基 础 篇
  • 第1章 开篇综述
  • 第2章 第一个iOS应用程序
  • 第3章 Cocoa Touch框架与构建应用界面
  • 第4章 UIView与视图
  • 第5章 委托协议、数据源协议与高级视图
  • 第6章 表视图 
  • 第7章 界面布局与屏幕适配
  • 第8章 视图控制器与导航模式
  • 第9章 iPad应用开发
  • 第二部分  设计与架构篇
  • 第10章 iOS常用设计模式
  • 第11章 iOS分层架构设计
  • 第12章 数据持久化 
  • 第三部分  进  阶  篇
  • 第13章 应用程序设置
  • 第14章 本地化
  • 第15章 iOS 9中访问通讯录
  • 第16章 数据交换格式
  • 第17章 REST Web Service
  • 第18章 定位服务
  • 第19章 苹果地图应用
  • 第四部分  测试、调试和优化篇
  • 第20章 找出程序中的bug——调试
  • 第21章 iOS测试驱动与单元测试
  • 第22章 iOS应用UI测试
  • 第23章 让你的程序“飞”起来——性能优化
  • 第五部分  实 战 篇
  • 第24章 管理好你的程序代码——代码版本控
  • 第25章 项目依赖管理
  • 第26章 重构MyNotes应用——iOS网络通信中的设计模式与架构设计
  • 第27章 把你的应用放到App Store上
  • 第28章 iOS敏捷开发项目实战——2016里约热内卢奥运会应用开发及App Store发布