iOS 10 开发指南

978-7-115-44097-6
作者: 管蕾
译者:
编辑: 张涛

图书目录:

详情

本书不但详细讲解了使用Objective-C语言开发iOS10应用程序的方法,而且还讲解了使用全新语言Swift开发iOS10应用程序的方法。全面讲解了iOS10的新特性、新技术,几乎涵盖了iOS 10所有的内容。无论是智能家居、健康应用、苹果手表、游戏开发等领域,在本书中都将能找到解决方案。并且在讲解过程中,细致讲解了每一个知识点的具体原理和具体用法。

图书摘要

版权信息

书名:iOS 10 开发指南

ISBN:978-7-115-44097-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


• 编  著 管 蕾        

  责任编辑 张 涛  

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


全书共42章,循序渐进地讲解了iOS 10应用开发的知识。本书从搭建开发环境讲起,依次讲解了Objective-C语言基础,Swift语言基础,Cocoa Touch,Xcode Interface Builder界面开发,使用Xcode编写MVC程序,文本框和文本视图,按钮和标签,滑块、步进和图像,使用开关控件和分段控件,Web视图控件和可滚动视图控件,提醒和操作表,工具栏,日期选择器,表视图,活动指示器,进度条和检索条,UIView,视图控制器,实现多场景和弹出框,iPad弹出框和分割视图控制器,界面旋转,图形、图像、图层和动画,声音服务,多媒体应用,定位处理,触摸,手势识别和Force Touch,读写应用程序数据,触摸和手势识别,和硬件之间的操作,开发通用的项目程序,推服务和多线程,Touch ID,游戏开发,HealthKit健康应用开发,watchOS 3智能手表开发,分屏多任务,使用CocoaPods依赖管理,使用扩展(Extension),在程序中加入Siri功能,开发tvOS程序,分屏多视图播放器,tvOS电影库系统等高级知识。

本书内容全面,几乎涵盖了iOS 10应用开发所需要的主要内容,全书内容言简意赅,讲解方法通俗易懂。

本书适合iOS初学者、iOS程序员、iPhone开发人员、iPad开发人员学习,也可以作为相关培训学校和大专院校相关专业的教学用书。


转眼之间,“iOS开发指南”系列图书已经上市两年有余。从最初的《iOS 8开发指南》到2015年上市的《iOS 9开发指南》,销售上取得了不错的成绩。成绩与压力并存,感激广大读者的信任,在接下来新书的写作中,本人愈发有责任要提高写作质量。2016年夏,苹果公司在WWDC2016开发者大会上正式发布了全新的iOS 10操作系统,本人恪守“尽全力为读者服务的宗旨”,对全书进行了彻底升级。

本书内容丰富,实例全面,在内容的编写上,本书具有以下特色。

(1)全新升级。

这是自“iOS开发指南”系列图书上市以来较大的一次升级,更新的内容很多。其中删减了不用的控件,新增了iOS 10的新特性。和以往版本相比,本书新增的全新内容有UIAlertController、UIPopoverPresentationController、Slide Over和Split View、3D Touch、Force Touch、Contacts Framework、Messages.framework、PushNotificationIOS、CocoaPods、Extension、watchOS 3、Siri和tvOS等。

(2)全新的Swift 3.0。

本书中的Swift实例采用全新的Swift 3.0编写。Swift 3.0是一款十分稳定的版本,和以前的1.0、1.1、1.2、2.0和2.2相比,它的语法更加简洁、高效,更好地解决了以往版本和Xcode的兼容性问题。

(3)突出iOS 10的新特性。

本书着重突出了iOS 10系统的新特性,重点剖析了iOS 10的新技术,例如苹果手表的升级和针对iPad产品升级。在本书中不但讲解了这些新特性的基本知识,而且用具体实例进行了演示。

(4)Objective-C和Swift双语对照实现。

本书中的实例不仅使用Objective-C语言实现,而且使用了苹果公司推出的Swift 3.0语言。通过本书的学习,读者可以掌握使用Objective-C语言和Swift 3.0语言开发iOS程序的方法。

(5)讲解苹果公司力推的新应用技术。

本书内容新颖、全面,讲解了从iOS开始具有或发展起来的新技术。这些新技术是苹果公司所力推的。例如HealthKit、watchOS 3、分屏处理、tvOS和Touch ID,这些内容是市面中同类书籍所没有涉及的。

(6)结构合理,易学易用。

从读者的实际需要出发,科学安排知识结构,内容由浅入深,叙述清楚。全书详细地讲解了和iOS开发有关的知识点。读者可以按照本书编排的章节顺序进行学习,也可以根据自己的需求对某一章节进行有针对性地学习。书中提供的丰富实例可以帮助读者学以致用。

(7)实例多,共计473个典型实例,实用性强。

本书彻底摒弃枯燥的理论和简单的操作,注重实用性和可操作性。本书正文一共介绍了230多个典型实例和两个综合性实例,并额外赠送了240个经典实例(这部分实例可从网站www.toppr.net下载),通过实例的实现过程,详细讲解了各个知识点的具体应用方法。

(8)内容全面。

无论是搭建开发环境,还是控件接口、网络、多媒体、程序扩展、tvOS和动画,以及游戏应用开发,在本书中你都能找到解决问题的方法。

(9)视频讲解(共计15小时的视频)+Objective-C和Swift电子书+PPT教学资源(通过网站www.toppr.net下载)。

为了帮助初学者更加高效地看懂并掌握本书内容,本书提供了内容全面的配套视频。视频不但讲解了本书中的重要知识点,而且详细讲解并演示了书中的每一个实例。另外,为了方便广大教师的教学工作,特意提供了对应的PPT教学资料。读者可以登录本书售后网站www.toppr.net下载获取赠送资料。

必备技术部分:主要讲解了 iOS开发入门、使用Xcode开发环境详解、Objective-C语言基础、Swift语言基础、Cocoa Touch框架、Xcode Interface Builder界面开发、使用Xcode编写MVC程序。

控件实战部分:讲解了文本框和文本视图、按钮和标签、滑块、步进和图像、开关控件和分段控件、Web视图控件、可滚动视图控件和翻页控件、提醒和操作表、工具栏、日期选择器、表视图(UITable)、活动指示器、进度条和检索条。

核心技术部分:讲解了视图控制器、实现多场景和弹出框、UICollectionView和UIVisualEffectView控件、iPad弹出框和分割视图控制器、界面旋转、大小和全屏处理、图形、图像、图层和动画、多媒体开发、分屏多任务、定位处理。

典型应用部分:讲解了读写应用程序数据、触摸、手势识别和Force Touch、和硬件之间的操作、地址簿、邮件、Twitter 和短消息、开发通用的项目程序、推服务和多线程、Touch ID详解。

技术提高部分:讲解了使用CocoaPods依赖管理、使用扩展(Extension)、游戏开发、watchOS 3智能手表开发、HealthKit健康应用开发、在程序中加入Siri功能、开发tvOS程序。

综合实战部分:讲解了两个综合案例,把所学的知识应用起来,如分屏多视图播放器和tvOS电影库系统。

初学iOS编程的自学者;

大中专院校的老师和学生;

毕业设计的学生;

iOS编程爱好者;

相关培训机构的老师和学员;

从事iOS开发的程序员。

为了更好地为读者服务,为大家提供一个完善的学习和交流平台,本书提供了读者交流QQ群:28316661,大家可以在里面学习交流。另外还提供了问题答疑和本书源程序的下载地址:www.toppr.net。欢迎广大读者畅所欲言,提出宝贵的建议。

本书在编写过程中,得到了人民邮电出版社工作人员的大力支持,正是基于各位编辑的求实、耐心和效率,才使得本书在这么短的时间内出版。另外,也十分感谢我的家人,在我写作的时候给予的大力支持。由于作者水平有限,纰漏和不尽如人意之处在所难免,诚请读者提出意见或建议,以便修订并使之更臻完善。编辑联系和投稿邮箱为zhangtao@ptpress.com.cn。

编 者


iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone、iPad和iTouch设备中。iOS通过这些移动设备展示了多点触摸、在线视频以及众多内置传感器的界面。本章将带领大家认识iOS这款系统,为读者步入本书后面知识的学习打下基础。

知识点讲解光盘:视频\知识点\第1章\ iOS系统介绍.mp4

iOS是由苹果公司开发的手持设备操作系统。苹果公司最早于2007年1月9日的Mac World大会上公布这个系统,最初是设计给iPhone使用的,后来陆续用到iPod touch、iPad以及Apple TV等苹果产品上。iOS与苹果的Mac OS X操作系统一样,本来这个系统名为iPhone OS,直到2010年6月7日WWDC大会上才宣布改名为iOS。

iOS最早于2007年1月9日的苹果Mac World大会上公布,随后于同年的6月发布第一版iOS操作系统,当初的名称为“iPhone运行OS X”。

2007年10月17日,苹果公司发布了第一个本地化iPhone应用程序开发包(SDK)。

2008年3月6日,苹果发布了第一个测试版开发包,并且将“iPhone runs OS X”改名为“iPhone OS”。

2008年9月,苹果公司将iPod touch的系统也换成了“iPhone OS”。

2010年2月27日,苹果公司发布iPad,iPad同样搭载了“iPhone OS”。

2010年6月,苹果公司将“iPhone OS”改名为“iOS”,同时还获得了思科 iOS的名称授权。

2010年第四季度,苹果公司的iOS占据了全球智能手机操作系统 26%的市场份额。

2011年10月4日,苹果公司宣布iOS平台的应用程序已经突破50万个。

2012年6月,苹果公司在WWDC 2012上推出了全新的iOS 6,提供了超过200 项新功能。

2013年6月10日,苹果公司在WWDC 2013上发布了iOS 7,去掉了所有的仿实物化,整体设计风格转为扁平化设计。

2014年6月3日,苹果公司在WWDC 2014开发者大会上正式发布了全新的iOS 8操作系统。

2015年6月9日,苹果公司在WWDC 2015开发者大会上发布了全新的iOS 9操作系统。

2016年6月13日,苹果开发者大会WWDC在旧金山召开,会议宣布iOS 10的测试版将在2016年夏天推出,正式版将在秋季发布。

北京时间2016年6月14日凌晨,苹果公司在WWDC 2016大会上,推出了新一代苹果手机操作系统iOS 10。虽然大部分改进在WWDC之前就已经曝光,但它毕竟带来了更加丰富的内建功能和更智能化的体验。本次大会上苹果公司正式公布了最新版iOS系统版本iOS 10,并在随后开放了iOS 9 beta1开发者预览版下载。iOS 10系统的最突出的新特性如下。

(1)新的屏幕通知查看方式。

苹果为iOS 10带来了全新的通知查看功能,即点击iPhone的屏幕,用户就能看到目前的通知和更新情况。

(2)将Siri开放给第三方开发者。

现在用户可以让Siri实现更多的功能,例如让Siri向自己的联系人发送微信等。目前Siri可以直接支持的应用有微信、WhatsApp、Uber、滴滴、Skype等。

(3)Siri将会更加智能。

Siri将拥有更多对语境的意识。基于用户的地点、日历、联系人、联系地址等,Siri会做出智能建议。Siri将越来越成为一个人工智能机器人,具备深度学习功能。

(4)照片应用更新。

基于深度学习技术,iOS 10对照片应用有比较大的更新。iOS 10对照片的搜索能力进一步增强,可以检测到新的人物和景色。未来的iPhone能够将相关的照片组织在一起,比如某次旅行的照片、某个周末的照片,并且能够进行自动编辑。iOS 10照片还新增了一个“记忆”标签。

(5)苹果地图。

有点类似Siri和照片的更新,苹果地图也增加了很多预测功能,例如苹果地图能够提供附近的餐厅建议。苹果地图的界面也得到了重新设计,更加简洁,并增加了交通实时信息。新的苹果地图还将整合在苹果CarPlay中,将为用户提供turn-by-turn导航功能。和Siri一样,地图也将开放给开发者。

(6)苹果音乐。

苹果音乐的界面得到了更新,界面会更加简洁、支持多任务,增加最近播放列表。

(7)苹果新闻。

苹果新闻在iOS 10中得到了较大的更新,应用界面被重新设计,增加了订阅功能,更新了通知功能。

(8)HomeKit。

iOS 10新增智能家庭应用,支持一键场景模式,HomeKit可以与Siri相连接。

(9)苹果电话。

苹果更新了电话功能,来电时可以区别出骚扰电话。

(10)iMesseage。

在iMessage方面,用户可以直接在文本框内发送视频、链接,实时分享照片。另外,苹果还增添了表情预测功能,打出的文字若和表情相符,将会直接推荐相关表情。

知识点讲解光盘:视频\知识点\第1章\开始iOS 10开发之旅.mp4

要想成为一名iOS开发人员,首先需要拥有一台计算机,并运行苹果的操作系统。对于iOS 10开发人员来说,需要安装最新的MacOS 10.12系统。硬盘至少有6GB的可用空间,开发系统的屏幕空间越大,就越容易营造高效的工作空间。对于广大读者来说,还是建议购买一台Mac机器,因为这样的开发效率更高,也避免一些因为不兼容所带来的调试错误。除此之外,还需要加入Apple开发人员计划,拥有一个Apple账号。

其实无须任何花费即可加入到Apple开发人员计划(Developer Program),然后下载iOS SDK(软件开发包)、编写iOS应用程序,并且在Apple iOS模拟器中运行它们。但是毕竟收费与免费之间还是存在一定的区别:免费会受到较多的限制。例如将编写的应用程序加载到iPhone中或通过App Store发布它们,需支付会员费。本书的大多数应用程序都可在免费工具提供的模拟器中正常运行,因此,接下来如何做由你决定。

注意:

 

如果不确定成为付费成员是否合适,建议读者先不要急于成为付费会员,而是先成为免费成员,在编写一些示例应用程序并在模拟器中运行它们后再升级为付费会员。但是,模拟器不能精确地模拟移动传感器输入和GPS数据等。

如果读者准备选择付费模式,付费的开发人员计划提供了两种等级:标准计划(99美元)和企业计划(299美元),前者适用于要通过App Store发布其应用程序的开发人员,而后者适用于开发的应用程序要在内部(而不是通过App Store)发布的大型公司(雇员超过500)。

注意:

 

无论是公司用户还是个人用户,都可选择标准计划(99美元)。在将应用程序发布到AppStore时,如果需要指出公司名,则在注册期间会给出标准的“个人”或“公司”计划选项。

无论是大型企业还是小型公司,无论是要成为免费成员还是付费成员,我们的iOS 10开发之旅都将从Apple网站开始。首先,访问Apple iOS开发中心(https://developer.apple.com/),如图1-1所示。

图1-1 Apple iOS的开发中心页面 

如果通过使用iTunes、iCloud或其他Apple服务获得了Apple ID,可将该ID用作开发账户。如果目前还没有Apple ID,需要新注册一个专门用于开发的新ID,可通过注册的方法创建一个新Apple ID,注册界面如图1-2所示。注册成功后输入账号信息登录,登录成功后的界面如图1-3所示。

图1-2 注册Apple ID的界面

图1-3 使用Apple ID账号登录后的界面

在成功登录Apple ID后,可以决定是加入付费的开发人员计划还是继续使用免费资源。要加入付费的开发人员计划,请再次将浏览器指向iOS开发计划网页(http://developer.apple.com/programs/ios/ ),并单击“Enron New”链接加入。阅读说明性文字后,单击“Continue”按钮开始进入加入流程。

在系统提示时选择“I’m Registered as a Developer with Apple and Would Like to Enroll in a Paid Apple Developer Program”,再单击“Continue”按钮。注册工具会引导我们申请加入付费的开发人员计划,包括在个人和公司选项之间做出选择。

知识点讲解光盘:视频\知识点\第1章\搭建开发环境.mp4

学习iOS 10开发也离不开好的开发工具的帮助,如果使用的是MacOS 10.12系统,下载iOS 10开发工具将很容易,只需通过简单地单击操作即可。为此,在Dock中打开Apple Store,搜索Xcode 8并免费下载它,坐下来等待Mac下载完大型安装程序(约5GB)。如果你使用的不是MacOS 10.12系统,可以从iOS开发中心(http://developer.apple.com/ios)下载。

注意:

 

如果是免费成员,登录iOS开发中心后,很可能只能看到一个安装程序,它可安装Xcode和iOS SDK(最新版本的开发工具);如果你是付费成员,可看到指向其他SDK版本(5.1、6.0、7.0等)的链接。

要开发iOS的应用程序,需要一台安装有Xcode工具的苹果计算机。Xcode是苹果提供的开发工具集,提供了项目管理、代码编辑、创建执行程序、代码调试、代码库管理和性能调节等功能。这个工具集的核心就是Xcode程序,提供了基本的源代码开发环境。

Xcode是一款强大的专业开发工具,可以简单快速,并以我们熟悉的方式执行绝大多数常见的软件开发任务。相对于创建单一类型的应用程序所需要的能力而言,Xcode要强大得多,设计它的目的是使我们可以创建任何想得到的软件产品类型,从Cocoa及Carbon应用程序,到内核扩展及Spotlight导入器等各种开发任务,Xcode都能完成。Xcode独具特色的用户界面可以帮助我们以各种不同的方式来漫游工具中的代码,并且可以访问工具箱下面的大量功能,包括GCC、javac、jikes和GDB,这些功能都是制作软件产品需要的。它是一个由专业人员设计、又由专业人员使用的工具。

由于能力出众,Xcode已经被Mac开发者社区广为采纳。而且随着苹果计算机向基于Intel的Macintosh迁移,转向Xcode变得比以往任何时候都更加重要。这是因为使用Xcode可以创建通用的二进制代码,这里所说的通用二进制代码是一种可以把PowerPC和Intel架构下的本地代码同时放到一个程序包执行的文件格式。事实上,对于还没有采用Xcode的开发人员,转向Xcode是将应用程序连编为通用二进制代码的第一个必要的步骤。

Xcode的官方地址是:https://developer.apple.com/xcode/,如图1-4所示。

图1-4 Xcode的官方地址 

在界面的下方介绍了Xcode 8的新功能,如图1-5所示。

图1-5 Xcode 8的新功能

截止到2016年6月14日,市面中最主流版本是Xcode 7,最新版本是Xcode 8 beta。

其实对于初学者来说,我们只需安装Xcode即可。通过使用Xcode,既能开发iPhone程序,也能够开发iPad程序。并且Xcode还是完全免费的,通过它提供的模拟器就可以在计算机上测试iOS程序。如果要发布iOS程序或在真实机器上测试iOS程序,就需要花99美元了。

1.下载Xcode 8

(1)下载的前提是先注册成为一名开发人员,打开苹果公司开发主页面https://developer.apple.com/

(2)登录到Xcode的下载页面https://developer.apple.com/xcode/downloads/,找到“Xcode 8”选项,如图1-6所示。

图1-6 Xcode的下载页面

(3)如果是付费账户,可以直接在苹果官方公司网站中下载获得Xcode 8。如果不是付费会员用户,可以从网络中搜索热心网友们的共享信息,以此达到下载Xcode 8的目的。单击“Download Xcode 8 beta”链接后开始下载。

2.安装Xcode

(1)下载完成后单击打开下载的“.dmg”格式文件,然后双击Xcode文件开始安装。

(2)双击Xcode下载到的文件开始安装,在弹出的欢迎界面中单击“Agree”按钮,如图1-7所示。

图1-7 单击“Continue”按钮

(3)在弹出的对话框中输入用户名和密码,然后单击“好”按钮,如图1-8所示。

图1-8 单击“好”按钮

(4)在弹出的新对话框中显示安装进度,如图1-9所示。

图1-9 安装进度

(5)Xcode 8的默认启动界面如图1-10所示。

图1-10 启动Xcode 8后的初始界面

注意:

 

(1)考虑到许多初学者没有购买苹果机的预算,可以在Windows系统上采用虚拟机的方式安装OS X系统。

(2)无论读者是已经有一定Xcode经验的开发者,还是刚开始迁移的新用户,都需要对Xcode的用户界面及如何用Xcode组织软件工具有一些理解,这样才能真正高效地使用这个工具。这种理解可以加深您对隐藏在Xcode背后的开发思想的认识,并帮助您更好地使用Xcode。

(3)建议读者将Xcode安装在OS X的Mac机器上,也就是装有苹果系统的苹果机上。通常来说,在苹果机器的OS X系统中已经内置了Xcode,默认目录是“/Developer/Applications”。

(4)本书使用的Xcode 8 beat(测试)版本,苹果公司会为开发者陆续推出后续新版本。读者可以用新版本调试本书的程序,完全不妨碍读者对本书的学习。

(5)我们可以使用苹果系统中自带App Store来获取Xcode 8,这种方式的优点是完全自动化实现,操作方便,无需经过本书上面介绍的步骤。

(1)Xcode位于“Developer”文件夹内中的“Applications”子文件夹中,快捷图标如图1-11所示。

(2)启动Xcode 8后的初始界面如图1-12所示,在此可以设置创建新工程还是打开一个已存在的工程。

图1-11 Xcode图标

图1-12 启动一个新项目

(3)单击“Create a new Xcode project”后会出现“Choose a template…”窗口,如图1-13所示。在New Project窗口的左侧,显示了可供选择的模板类别,因为我们的重点是类别iOS Application,所以,在此需要确保选择了它。而在右侧显示了当前类别中的模板以及当前选定模板的描述。

(4)从iOS 9开始,在“Choose a template…”窗口的左侧新增了“tvOS”选项,这是为开发苹果电视应用程序所准备的。选择“tvOS”选项后的效果如图1-14所示。

图1-13 “Choose a template…”窗口 

图1-14 选择 “tvOS”选项后的效果

(5)对于大多数iOS 10应用程序来说,只需选择“iOS”下的“Single View Application(单视图应用程序)”模板,然后单击Next(下一步)按钮即可,如图1-15所示。

(6)选择模板并单击“Next”按钮后,在新界面中Xcode将要求您指定产品名称和公司标识符。产品名称就是应用程序的名称,而公司标识符创建应用程序的组织或个人的域名,但按相反的顺序排列。这两者组成了束标识符,它将您的应用程序与其他iOS应用程序区分开来,如图1-16所示。

图1-15 单击模板“Single View Application(单视图应用程序)”

图1-16 Xcode文件列表窗口

例如,我们将创建一个名为“exSwift”的应用程序,设置域名是“apple”。如果没有域名,在开发时可以使用默认的标识符。

(7)单击“Next”按钮,Xcode将要求我们指定项目的存储位置。切换到硬盘中合适的文件夹,确保没有选择复选框Source Control,再单击“Create(创建)”按钮。Xcode将创建一个名称与项目名相同的文件夹,并将所有相关联的模板文件都放到该文件夹中,如图1-17所示。

(8)在Xcode中创建或打开项目后,将出现一个类似于iTunes的窗口,您将使用它来完成所有的工作,从编写代码到设计应用程序界面。如果这是您第一次接触Xcode,令人眼花缭乱的按钮、下拉列表和图标将让您感到不适。为让您对这些东西有大致认识,下面首先介绍该界面的主要功能区域,如图1-18所示。

图1-17 选择保存位置

图1-18 Xcode界面

(9)运行iOS模拟器的方法十分简单,只需单击左上角的按钮即可。例如选中“iPhone SE”选项,模拟器的运行效果如图1-19所示。

图1-19 “iPhone SE”模拟器的运行效果

在开发过程中,经常需要打开一个现有的iOS 10项目,例如读者打开本书附带光盘中的源代码工程。

(1)启动Xcode 8开发工具,然后单击右下角的“Open another project…”命令,如图1-20所示。

图1-20 单击右下角的“Open another project…”

(2)此时会弹出选择目录对话框界面,在此找到要打开项目的目录,然后单击“.xcodeproj”格式的文件即可打开这个iOS 10项目,如图1-21所示。

图1-21 单击“.xcodeproj”格式的文件

另外,读者也可以直接来到要打开工程的目录位置,双击里面的“.xcodeproj”格式的文件也可以打开这个iOS 10项目。

知识点讲解光盘:视频\知识点\第1章\iOS 10中的常用开发框架.mp4

为了提高开发iOS程序的效率,除了可以使用Xcode集成开发工具之外,还可以使用第三方提供的框架,这些框架为我们提供了完整的项目解决方案,是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。在OSX下的Mac操作系统中,大约存在80个框架,这些框架可以用来开发应用程序,处理Mac的Address Book结构、刻制CD、播放DVD、使用QuickTime播放电影和歌曲等。

在iOS的众多框架中,其中有两个最为常用的框架:Foundation框架和Cocoa框架。

在OSX下的Mac操作系统中,为所有程序开发奠定基础的框架称为Foundation框架。该框架允许使用一些基本对象,例如数字和字符串,以及一些对象集合,如数组、字典和集合。其他功能包括处理日期和时间、自动化的内存管理、处理基础文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)。

Foundation头文件的存储目录是:

/System/Library/Frameworks/Foundation.framework/Headers

上述头文件实际上与其存储位置的其他目录相链接。请读者查看这个目录中存储在系统上的Foundation框架文档,熟悉它的内容和用法简介。Foundation框架文档存储在我们计算机系统中(位于/Develop/Documentation目录中),另外,Apple网站上也提供了此说明文档。大多数文档为HTML格式的文件,可以通过浏览器查看。同时也提供了Acrobat pdf文件。这个文档中包含Foundation的所有类及其实现的所有方法和函数的描述。

如果正在使用Xcode开发程序,可以通过Xcode的Help菜单中的Documentation窗口轻松访问文档。通过这个窗口,可以轻松搜索和访问存储在计算机中或者在线的文档。如果正在Xcode中编辑文件并且想要快速访问某个特定头文件、方法或类的文档,可以通过高亮显示编辑器窗口中的文本并右键单击的方法来实现。在出现的菜单中,可以适当选择Find Selected Text in Documentation或者Find Selected Text in API Reference。Xcode将搜索文档库,并显示与查询相匹配的结果。

看一看它是如何工作的。类NSString是一个Foundation类,可以使用它来处理字符串。假设正在编辑某个使用该类的程序,并且想要获得更多关于这个类及其方法的信息,无论何时,当单词NSString出现在编辑窗口时,都可以将其高亮显示并右键单击。如果从出现的菜单中选择Find Selected Text in API Reference,会得到一个外观与图1-22类似的文档窗口。

图1-22 NSString类的文档

如果向下滚动标有NSString Class Reference的面板,将发现(在其他内容中间)一个该类所支持的所有方法的列表。这是一个能够获得有关实现哪些方法等信息的便捷途径,包括它们如何工作以及它们的预期参数。

读者可以在线访问developer.apple.com/referencelibrary,打开Foundation参考文档(通过Cocoa、Frameworks、Foundation Framework Reference链接),在这个站点中还能够发现一些介绍某些特定编程问题的文档,例如内存管理、字符串和文件管理。除非订阅的是某个特定文档集,否则在线文档要比存储在计算机硬盘中的文档从时间上讲更新一些,如图1-22所示。

在Foundation框架中包括了大量可供使用的类、方法和函数。在Mac OS X上,大约有125个可用的头文件。作为一种简便的形式,我们可以使用如下代码头文件。

#import <Foundation/Foundation.h>

因为Foundation.h文件实际上导入了其他所有Foundation头文件,所以不必担心是否导入了正确的头文件,Xcode会自动将这个头文件插入到程序中。虽然使用上述代码会显著地增加程序的编译时间,但是,通过使用预编译的头文件,可以避免这些额外的时间开销。预编译的头文件是经过编译器预先处理过的文件。在默认情况下,所有Xcode项目都会受益于预编译的头文件。在本章使用每个对象时都会用到这些特定的头文件,这会有助于我们熟悉每个头文件所包含的内容。

Application Kit框架包含广泛的类和方法,它们能够开发交互式图形应用程序,使得开发文本、菜单、工具栏、表、文档、剪贴板和窗口等应用变得十分简便。在Mac OS X操作系统中,术语Cocoa是指Foundation框架和Application kit框架。术语Cocoa Touch是指Foundation框架和UIKit框架。由此可见,Cocoa是一种支持应用程序提供丰富用户体验的框架,它实际上由如下两个框架组成:

其中后者用于提供与窗口、按钮、列表等相关的类。在编程语言中,通常使用示意图来说明框架最顶层应用程序与底层硬件之间的层次,如图1-23所示就是一个这样的图。

图1-23 应用程序层次结构

图1-23中各个层次的具体说明如下所示。

内核以设备驱动程序的形式提供与硬件的底层通信,它负责管理系统资源,包括调度要执行的程序、管理内存和电源,以及执行基本的I/O操作。

核心服务提供的支持比它上面层次更加底层或更加“核心”。例如,在Mac OS X中主要对集合、网络、调试、文件管理、文件夹、内存管理、线程、时间和电源的管理。

应用程序服务层包含对打印和图形呈现的支持,包括Quartz、OpenGL和Quicktime。由此可见,Cocoa层直接位于应用程序层之下。正如图1-23中指出的那样,Cocoa包括Foundation和AppKit框架。Foundation框架提供的类用于处理集合、字符串、内存管理、文件系统、存档等。通过AppKit框架中提供的类,可以管理视图、窗口、文档等用户界面。在很多情况下,Foundation框架为底层核心服务层(主要用过程化的C语言编写)中定义的数据结构定义了一种面向对象的映射。

Cocoa框架用于Mac OS X桌面与笔记本电脑的应用程序开发,而Cocoa Touch框架用于iPhone与iTouch的应用程序开发。Cocoa和Cocoa Touch都有Foundation框架。然而在Cocoa Touch下,UIKit代替了AppKit框架,以便为很多相同类型的对象提供支持,如窗口、视图、按钮、文本域等。另外,Cocoa Touch还提供使用加速器(它与GPS和Wi-Fi信号一样都能跟踪位置)的类和触摸式界面,并且去掉了不需要的类,如支持打印的类。

总的来说iOS程序有两类框架,一类是游戏框架,另一类是非游戏框架,接下来将要介绍的是非游戏框架,即基于iPhone用户界面标准控件的程序框架。

典型的iOS程序包含一个Window(窗口)和几个UIViewController(视图控制器),每个UIViewController可以管理多个UIView(在iPhone里你看到的、感觉到的都是UIView,也可能是UITableView、UIWebView、UIImageView等)。这些UIView之间进行层次迭放、显示、隐藏、旋转、移动等都由UIViewController进行管理,而UIViewController之间的切换,通常情况是通过UINavigationController、UITabBarController或UISplitViewController进行切换。

(1)UINavigationController。

是用于构建分层应用程序的主要工具,它维护了一个视图控制器栈,任何类型的视图控制器都可以放入。它在管理以及换入和换出多个内容视图方面,与UITabBarController(标签控制器)类似。两者间的主要不同在于UINavigationController是作为栈来实现,它更适合用于处理分层数据。另外,UINavigationController还有一个作用是用作顶部菜单。

当你的程序具有层次化的工作流时,就比较适合使用UINavigationController来管理UIViewController,即用户可以从上一层界面进入下一层界面,在下一层界面处理完以后又可以简单地返回到上一层界面,UINavigationController使用堆栈的方式来管理UIViewController。

(2)UITabBarController。

当我们的应用程序需要分为几个相对比较独立的部分时,就比较适合使用UITabBarController来组织用户界面。如图1-24所示,屏幕下面被划分成了两个部分。

图1-24 UITabBarController的作用

(3)UISplitViewController。

UISplitViewController属于iPad特有的界面控件,适合用于主从界面的情况(Master view→Detail view),Detail view跟随Master view进行更新。如图1-25所示,屏幕左边(Master View)是主菜单,单击每个菜单则屏幕右边(Detail View)就进行刷新,屏幕右边的界面内容又可以通过UINavigationController进行组织,以便用户进入Detail View进行更多操作,用户界面以这样的方式进行组织,使得程序内容清晰,非常有条理,是组织用户界面导航很好的方式。

图1-25 UISplitViewController的作用


Xcode是一款功能全面的应用程序,通过此工具可以轻松输入、编译、调试并执行Objective-C程序。如果想在Mac上快速开发iOS应用程序,则必须学会使用这个强大的工具的方法。在本章的内容中,将详细讲解Xcode 8开发工具的基本知识,为读者步入本书后面知识的学习打下基础。

使用Xcode 8打开一个iOS 10项目后的效果如图2-1所示。

图2-1 打开一个iOS 10项目后的效果

(1)调试区域:左上角的这部分功能是控制程序编译调试或者终止调试,还有选择Scheme目标的地方。单击三角形图标会启动模拟器运行这个iOS程序,单击正方形图标会停止运行。

(2)资源管理器:左边这一部分是资源管理器,上方可以设置选择显示的视图,有Class视图、搜索视图、错误视图等。

(3)工程面板:这部分是最重要的,也是整个窗口中占用面积最大的区域。通常显示当前工程的总体信息,例如编译信息、版本信息和团队信息等。当在“资源管理器”中用鼠标选择一个源代码文件时,此时这个区域将变为“编码面板”,在面板中将显示这个文件的具体源代码。

(4)属性面板:在进行Storyboard或者xib设计时十分有用,可以设置每个控件的属性。和Visual C++、Vsiual Studio.NET中的属性面板类似。

调试工具栏界面效果如图2-2所示。从左面开始我们来看看常用的工具栏项目,首先是run运行按钮,单击它可以打开模拟器来运行我们的项目。停止运行按钮是。另外,当单击并按住片刻后可以看到下面的弹出菜单,为我们提供了更多的运行选项。

图2-2 调试工具栏界面

在停止运行按钮的旁边,可以看到图2-3所示这样的一个下拉列表,这里让我们可以选择虚拟器的属性,是iPad还是iPhone。iOS Device是指真机测试,如图2-3所示。

工具栏最右侧有3个关闭视图控制器工具,可以让我们关闭一些不需要的视图,如图2-4所示。

图2-3 选择虚拟器的属性 

图2-4 关闭视图控制器工具

在导航区域包含了多个导航类型,例如选中第一个图标后会显示项目导航面板,即显示当前项目的构成文件,如图2-5所示。

单击第2个图标后会来到符号导航面板界面,将显示当前项目中包含的类、方法和属性,如图2-6所示。

单击第3个图标后会来到搜索导航面板界面,在此可以输入将要搜索的关键字,按下回车键后将会显示搜索结果。例如输入关键字“first”后的效果如图2-7所示。

单击第4个图标后会来到问题导航面板界面,如果当前项目存在错误或警告,则会在此面板中显示出来,如图2-8所示。

单击第5个图标后会来到测试导航面板界面,将会显示当前项目包含的测试用例和测试方法等,如图2-9所示。

图2-5 项目导航面板界面

图2-6 符号导航面板界面

图2-7 搜索导航面板界面

图2-8 显示错误信息

单击第6个图标后会来到调试导航面板界面,在默认情况下将会显示一片空白,如图2-10所示。只有进行项目调试时,才会在这个面板中显示内容。

图2-9 测试导航面板界面 

图2-10 调试导航面板界面

在Xcode 8中使用断点调试的基本流程如下所示。

打开某一个文件,在编码窗口中找到想要添加断点的行号位置,然后鼠标左键单击,此时这行代码前面将会出现图标,如图2-11所示。如果想删除断点,只需用鼠标左键按住断点并拖向旁边,此时断点会消失。

图2-11 设置的断点

在添加断点并运行项目后,程序会进入调试状态,并且会执行到断点处停下来,此面板中将会显示执行这个断点时的所有变量以及变量的值,如图2-12所示。此时的测试导航界面如图2-13所示。

图2-12 变量检查值

断点测试导航界面的功能非常强大,甚至可以查看程序对CPU的使用情况,如图2-14所示。

单击第7个图标后会来到断点导航面板界面,在此界面中将会显示当前项目中的所有断点。右键单击断点后,可以在弹出的命令中设置禁用断点或删除断点,如图2-15所示。

单击第8个图标后会来到日志导航面板界面,在此界面中将会显示在开发整个项目的过程中所发生过的所有信息,如图2-16所示。

图2-13 断点测试导航界面

图2-14 CPU的使用情况

图2-15 禁用断点或删除断点

图2-16 日志导航面板

单击属性窗口中的图标后会来到文件检查器面板界面,此面板用于显示该文件存储的相关信息,例如文件名、文件类型、文件存储路径和文件编码等信息,如图2-17所示。

单击属性窗口中的图标后会来到快速帮助面板界面,当将鼠标停留在某个源码文件中的声明代码片段部分时,会在快速帮助面板界面中显示帮助信息。如图2-18的右上方显示了鼠标所在位置的帮助信息。

图2-17 文件检查器面板 

图2-18 快速帮助信息

经过本章前面内容的介绍,已经了解了Xcode 8中面板的基本知识。在本节的内容中,将详细讲解在Xcode 8中进行基本操作的知识。

通过xcode编写代码,代码的头部会有类似于图2-19所示的内容。

图2-19 头部内容

在此可以将这部分内容改为公司的名称或者项目的名称。

当项目开发到一段时间后,源代码文件会越来越多。再从Groups & Files的界面去点选,效率比较差。可以借助Xcode的浏览器窗口,如图2-20所示。

图2-20 Xcode的浏览器窗口

在图2-20的搜索框中可以输入关键字,这样浏览器窗口里只显示带关键字的文件了,比如只想看Book相关的类,如图2-21所示。

图2-21 输入关键字

例如在图2-22所示的界面中,有很多行都顶格了,此时需要进行格式化处理。

图2-22 多行都顶格

选中需要格式化的代码,然后在上下文菜单中进行查找,这是比较规矩的办法,如图2-23所示。

图2-23 在上下文菜单中进行查找

Xcode没有提供快捷键,当然自己可以设置,此时可以用快捷键实现,例如Ctrl+a(全选文字)、Ctrl+x(剪切文字)、Ctrl+v(粘贴文字)。Xcode会对粘贴的文字格式化。

有的时候代码需要缩进,有的时候又要做相反的操作。单行缩进和其他编辑器类似,只需使用Tab键即可。如果选中多行则需要使用快捷键,其中command+]表示缩进,command+[表示反向缩进。

使用IDE工具的一大好处是,工具能够帮助我们自动完成冗长的类型名称。Xcode提供了这方面的功能。比如下面的输出日志。

NSLog(@"book author: %@",book.author);

如果都自己输入会很麻烦的,可以先输入ns,然后使用快捷键“Ctrl+.”,会自动出现如下代码。

NSLog(NSString * format)

然后填写参数即可。快捷键“Ctrl+.”的功能是自动给出第一个匹配ns关键字的函数或类型,而NSLog是第一个。如果继续使用“Ctrl+.”,则会出现比如NSString的形式。以此类推,会显示所有ns开头的类型或函数,并循环往复。或者,也可以用“Ctrl+,”快捷键,比如还是ns,那么会显示全部ns开头的类型、函数、常量等的列表。可以在这里选择。其实,Xcode也可以在你输入代码的过程中自动给出建议。比如要输入NSString。当输入到NSStr的时候。

NSString

此时后面的ing会自动出现,如果和我预想的一样,只需直接按Tab键确认即可。也许你想输入的是NSStream,那么可以继续输入。另外也可按ESC键,这时就会出现结果列表供选择了,如图2-24所示。

如果是正在输入方法,那么会自动完成如图2-25所示的样子。

图2-24 出现结果列表 

图2-25 自动完成的结果

我们可以使用Tab键确认方法中的内容,或者通过快捷键“Ctrl+/”在方法中的参数来回切换。

在编辑代码的过程中经常会做查找和替代的操作,如果只是查找则直接按“command+f”即可,在代码的右上角会出现如图2-26所示的对话框。只需在里面输入关键字,不论大小写,代码中所有命中的文字都高亮显示。

也可以实现更复杂的查找,比如是否大小写敏感,是否使用正则表达式等。设置界面如图2-27所示。

通过图2-28中的“Find & Replace”可以切换到替代界面。

例如图2-29所示的界面将查找设置为大小写敏感,然后替代为myBook。

另外,也可以单击按钮是否全部替代,还是查找一个替代一个等。如果需要在整个项目内查找和替代,则依次单击“Find”->“Find in Project…”命令,如图2-30所示。

还是以找关键字book为例,则实现界面如图2-31所示。

图2-26 查找界面

图2-27 复杂查找设置

图2-28 “Find & Replace”替换

图2-29 替代为myBook

图2-30 “Find in Project…”命令 

图2-31 在整个项目内查找“book”关键字

替代操作的过程也与之类似,在此不再进行详细讲解。

如果想定位光标到选中文件的行上,可以使用快捷键“Command+L”来实现,也可以依次单击“Navigate”->“Jump to Line…”命令实现,如图2-32所示。

在使用菜单或者快捷键时都会出现下面的对话框,输入行号和回车后就会来到该文件的指定行,如图2-33所示。

图2-32 “Jump to Line”命令 

图2-33 输入行号

有时候需要快速打开头文件,例如图2-34所示的界面。要想知道这里的文件ViewController.h到底是什么内容,可以鼠标选中文件ViewController.h来实现。

图2-34 一个头文件

依次单击“File”->“Open Quickly…”命令,如图2-35所示。

此时会弹出如图2-36所示的对话框。

图2-35 “Open Quickly…”命令

图2-36 “Open Quickly…”对话框

此时双击文件ViewController.h的条目就可以看到如图2-37所示的界面。

图2-37 文件ViewController.h的内容

在代码窗口上边有一个工具条,此工具条提供了很多方便的导航功能,如图2-38所示的功能。

图2-38 一个导航条

也可以用来实现上面TODO的需求。这里有两种自定义导航条的写法。其中下面是标准写法。

#pragma mark

而下面是Xcode兼容的格式。

    // TODO: xxx
    // FIXME: xxx

完整的代码如图2-39所示。

此时会产生如图2-40所示的导航条效果。

图2-39 完整的代码

图2-40 产生的导航条效果

如果想快速地查看官方API文档,可以在源代码中按下“Option”键并鼠标双击该类型(函数、变量等),比如图2-41所示的是“didReceiveMemoryWarning”的API文档对话框。

如果单击图2-41中标识的按钮,会弹出完整文档的窗口,如图2-42所示。

图2-41 didReceiveMemoryWarning的API文档对话框

图2-42 完整文档的窗口

最简单的调试方法是通过NSLog打印出程序运行中的结果,然后根据这些结果判断程序运行的流程和结果值是否符合预期。对于简单的项目,通常使用这种方式就足够了。但是,如果开发的是商业项目,需要借助Xcode提供的专门调试工具。所有的编程工具的调试思路都是一样的。首先要在代码中设置断点,此时可以想象一下,程序的执行是顺序的,可能怀疑某个地方的代码出了问题(引发bug),那么就在这段代码开始的地方,比如是这个方法的第一行,或者循环的开始部分,设置一个断点。那么程序在调试时会在运行到断点时终止,接下来可以一行一行地执行代码,判断执行顺序是否是自己预期的,或者变量的值是否和自己想的一样。

设置断点的方法非常简单,比如想对框中(运行到)表示的行设置断点,就单击该行左侧圈的位置,如图2-43所示。

图2-43 单击该行左侧圈的位置

单击后会出现断点标志,如图2-44所示。

然后运行代码,比如使用“Command+Enter”命令,这时将运行代码,并且停止在断点处,如图2-45所示。

图2-44 出现断点标志

图2-45 停止在断点处

可以通过“Shift+Command+Y”命令调出调试对话框,如图2-46所示。

图2-46 调试对话框

这和其他语言IDE工具的界面大同小异,因为都具有类似的功能。下面是主要命令的具体说明。

通过调试工具,可以对应用做全面和细致的调试。

在Mac中使用Xcode 8进行iOS开发时,难免会遇到很多API、类和函数等资料的查询操作,此时可以利用Xcode自带的帮助文档系统进行学习并解决我们的问题。使用Xcode 8帮助系统的方式有如下3种。

(1)使用“快速帮助面板”

在本章前面的2.2节中已经介绍了使用“快速帮助面板”的方法,只需将鼠标放在源代码中的某个类或函数上,即可在“快速帮助面板”中弹出帮助信息,如图2-47所示。

此时单击右下角中的“View Controller Catalog for iOSView Controller”后会在新界面中显示详细信息,如图2-48所示。

(2)使用搜索功能

在图2-48中的帮助系统中,我们可以在顶部文本框中输入一个关键字,即可在下方展示对应的知识点信息。例如输入关键字“NSString”后的效果如图2-49所示。

图2-47 “快速帮助面板”界面

图2-48 详细帮助信息

图2-49 输入关键字“NSString”后的效果

(3)使用编辑区的快速帮助

在某个程序文件的代码编辑界面,按下Option键后,当将鼠标光标移动到某个类上时,光标会变为问号,此时单击鼠标就会弹出悬浮样式的快速帮助信息,显示对应的接口文件和参考文档。

当单击打开文档名时,会弹出帮助界面显示相关的帮助信息。


相关图书

iOS 14开发指南【进QQ群414744032索取配套资源】
iOS 14开发指南【进QQ群414744032索取配套资源】
iOS 11 开发指南
iOS 11 开发指南
iOS和tvOS 2D游戏开发教程
iOS和tvOS 2D游戏开发教程
Swift 3开发指南
Swift 3开发指南
iOS  项目开发全程实录
iOS 项目开发全程实录
iOS 9应用开发入门经典(第7版)
iOS 9应用开发入门经典(第7版)

相关文章

相关课程