正版二手书,欢迎选购
¥ 18.36 1.5折 ¥ 119 九品
库存2件
作者Erica Sadun|Rich Wardwell
出版社机械工业出版社
ISBN9787111491859
出版时间2015-04
装帧平装
开本16开
定价119元
货号972073164543213579
上书时间2024-10-31
欢迎阅读本书新版!
自苹果公司发行iOS移动操作系统以来,iOS 7的变革是最为重大的。这本教程将会指导各位开发者针对这个新发布的优秀操作系统来制作应用程序。2013年的全球软件开发者年会(Worldwide Developers Conference,WWDC)公布了一些新的特性和视觉范式,而本书这次修订已经将它们全都涵盖在内了,笔者将会向你演示如何将其融入自己的应用程序里。
发行团队将这次修订过的Cookbook材料分成两本书来印刷,以控制每本书的篇幅。本书的英文书名叫作《The Core iOS Developer’s Cookbook》,讲述了日常开发所需的关键知识,介绍了使用标准API与界面元件来创建iOS应用程序时所需用到的类。同时,本书以“解决方案”的形式讲解创建移动应用程序时所需的图像、触摸及视图等技术。
另外一本书的英文名叫作《Learning iOS Development: A Hands-on Guide to the Fundamentals of iOS Programming》,其中包含了一些入门知识,相当于老版本Cookbook的前面几章。该书适合想要从头学习iOS 7基础知识的开发者阅读。《Learning iOS Development》讲述了Objective-C编程语言、Xcode开发环境以及与调试和部署有关的内容,你可以通过它学会如何使用苹果公司的开发工具套件。
学习本书所需的材料和知识 想开发iOS应用程序,肯定得有一台测试应用程序用的iOS设备,而且最好是一台新款的iPhone或iPad。下面列出阅读本书所需的材料和基础知识:
苹果公司的iOS SDK——你可以从苹果公司的iOS Dev Center(http://developer.apple.com/ios)下载最新版的iOS SDK。如果打算在App Store上发售应用程序,那么还必须成为付费的iOS开发者。个人开发者每年需要付款99美元,企业开发者每年需要付款299美元。注册成为付费开发者之后,就会收到一份证书,开发者可以用这份证书来签署应用程序,并将其下载到iPhone、iPod touch或iPad中进行测试与调试,此外,付费开发者还可以提前获得预览版的iOS系统。未付费的开发者可以在Mac系统的模拟器上测试软件,但是不能将其部署到设备中,也不能将其提交到App Store。
运行Mac OS X Mountain Lion(v 10.8)系统的新款Mac,如果装的是Mac OS X Mavericks(v 10.9)系统就更好——你需要为软件开发留出足够的磁盘空间,而且应该尽可能把Mac的RAM装配得大一些。
iOS设备——尽管iOS SDK里的模拟器也能用来测试应用程序,但是开发者仍然需要一台iOS硬件设备,以便针对iOS平台做开发。你可以把iOS设备与电脑相连,并把自己构建的软件装上去。在开发真实的App Store程序时,应该准备数款硬件和固件各不相同的设备,以便在目标用户可能会用到的各种平台上进行测试。
因特网连接——连上网之后,就可以测试应用程序在使用WiFi和使用移动数据网络时的效果了。
熟悉Objective-C——要想编写iPhone程序,需要了解Objective-C 2.0。这是一门基于ANSI C的语言,并且带有面向对象扩展,也就是说,你需要了解一点C语言的知识。如果原来用Java或C++写过程序,而且又熟悉C语言,那么应该能够迅速适应Objective-C。
学习Mac/iOS开发的路线图 一本书不可能把各类读者所需的全部知识都囊括其中。假如两位作者把你所需的全部内容都写到这本书里,那它会重到根本拿不起来。实际上,想要开发Mac及iOS平台上的程序,需要学习很多内容。如果你刚处于起步阶段,而且没有写过程序,那么首先应该学习一门大学水平的C语言课程。大部分编程语言都以C语言为根基,对于想要成为开发者的人来说,自然也要从C语言学起。
学会C语言及编译器(基础的C语言课程会讲到它)的用法之后,剩下的事情就简单多了。此时可以直接跳到Objective-C语言,学习如何用它来编程,同时还可以学习Cocoa框架。图1是一张流程图,里面列出了培生教育出版集团所出版的一些关键书籍,它们可以帮助你成为一名熟练的iOS开发者。
了解C语言之后,就可以通过多种方式来学习Objective-C编程了。如果想深入了解Objective-C,那么可以阅读苹果公司自编的文档,也可以翻看下列Objective-C教材:
《Objective-C Programming: The Big Nerd Ranch Guide》,第2版,Aaron Hillegass与Mikey Ward著(Big Nerd Ranch,2013年) 《Learning Objective-C 2.0: A Hands-on Guide to Objective-C for Mac and iOS Developers》,第2版,Robert Clair著(Addison-Wesley,2012年) 《Programming in Objective-C 2.0》,第6版,Stephen Kochan著(Addison-Wesley,2012年) 图1成为iOS开发者的路线图 学会编程语言之后,接下来应该学习Cocoa(适用于Mac开发)、Cocoa Touch(适用于iOS开发)以及开发工具,这个开发工具指的就是Xcode。这一阶段也有几种不同的学习途径。你依然可以在苹果Developer查阅苹果公司自编的Cocoa、Cocoa Touch及Xcode文档(网址是:developer.apple.com),也可以通过阅读书籍来学习它们。笔者推荐两本经典的教材:《iOS Programming: The Big Nerd Ranch Guide》第2版与《Cocoa Programming for Mac OS X》第4版,前者是Aaron Hillegass与人合著的,后者是他自己写的,Aaron Hillegass是美国亚特兰大Big Nerd Ranch公司的创始人。Mac开发圈内的人士非常欣赏Aaron所写的书,而且cocoa-dev邮件列表里面的人也最爱推荐他的书。
. 市面上还有非常多的书籍可供选择,包括由Dave Mark、Jack Nutting、Jeff LaMarche及Fredrik Olsson所著的畅销书《Beginning iOS 6 Development》(Apress,2011年)。如果你完全是个编程新手,那么可以看看Tim Isted写的《Beginning Mac Programming》(Pragmatic Programmers,2011年)。不要只看一本书,也不要只看一家出版社的书。和不同的开发者交流,可以学到更多的知识,同理,通过阅读多本书籍,你也可以学到更多的技巧和窍门。
若想真正掌握Mac或iOS开发,还需通过各种渠道学习:看书、看博客、看邮件列表、看苹果公司自编的开发文档,而且最好能参加开发者会议。如果有机会参与WWDC的话,你就会明白开发者都在讨论些什么内容。对于真正想学好编程的开发者来说,在开发者会议上花些时间和别人交流是件非常值得的事情(在参加WWDC时,请和苹果公司的工程师交流一下)。
本书结构 本书以解决方案的形式逐个讲解iOS开发新手经常遇到的各种问题,比方说:排布界面元件、响应用户、访问本地数据源、连接Internet等。相关的一组任务会放到同一章里面,这样读者就可以直接找到问题的解决办法,而不用再去想解决该问题所需使用的类或框架了。
本书范例代码可供你随手剪切并粘贴,也就是说,书中每个解决方案里面的源代码都可以复用到你自己的应用程序里,你只需按照自己程序的需求来调整即可。
下面简述每章内容。
第1章,手势与触摸——在iOS程序中,触摸是一种非常重要的手段,用户可以由此来传达对应用程序所做的操作。触摸并不局限于按下按钮及通过键盘交互这两种行为。本章将介绍直接操纵界面、多点触摸以及其他一些内容。你将会学到如何创建这样一种视图:用户可以在屏幕上试验各种手势,并看到不同手势之间的区别。另外,本章还会告诉你如何创建自定义的手势识别器。
第2章,构建并使用控件——本章将深入讲解如何操控应用程序。你将会详细了解控件的运作机制,还能学会以多种方式来构建并自定义控件。这一章包含很多解决方案,有的比较简单,有的比较复杂,你可以把它们复用到自己的程序里。
第3章,提醒用户——iOS提供了多种在屏幕上向用户显示信息的方式,比如弹出式对话框、进度条、本机通知(local notification)、popover和audio ping等。本章将会讲解如何在应用程序中实现这些信息通知手段,以帮助读者用更多的方式向用户显示信息。本章将介绍这些类的基本使用方法,另外还会提供一些解决方案,使你可以通过基于块的API(blocks-based API)来轻松地处理与警示信息有关的交互操作。
第4章,编排视图及其动画效果——UIView类及其子类可用来填充iOS设备的屏幕。本章将会从头开始讲解视图。与视图有关的解决方案会分别演示如何获取视图对象、如何制作视图的动画效果以及如何操纵视图对象。你将会学到怎样构建、检视及分解视图层级,并了解多个视图是如何组织起来的。通过学习本章,你会发现在图形界面中创建并摆放视图的时候,视图位置的排布是非常重要的,另外,你还会学到如何制作视图在屏幕上移动和切换时所具备的动画效果。
第5章,视图的约束系统——Auto Layout机制彻底改变了iOS程序里视图的排布方式。苹果公司的这种布局特性使开发者可以轻松地设计出更为协调一致的界面。此特性对于同一系列不同屏幕大小、不同界面、不同屏幕方向、不同语言的设备来说尤为重要。本章将会介绍如何用代码来做视图约束方面的开发。你会学到怎样在屏幕上的物件之间创建关系以及怎样指定布局规则,使iOS能够自动排布应用程序中的视图。看完本章后,你就能设定一套健全的屏幕布局规则了。
第6章,文本输入——本章的解决方案都与文本有关,这些解决方案能够解决许多问题。你会学到如何控制键盘、如何使屏幕上面的控件支持文本输入、如何扫描文本、如何格式化文本,等等。这一章会把与iOS程序文本处理有关的各项技术都涵盖在内,包括文本框、文本视图以及iOS内置的拼写检查器。
第7章,使用视图控制器——本章将会讲解各种视图控制器类的用法,这些类使得用户可以在更大的范围中与应用程序交互,而开发者也可以借此来排布视图。你将通过本章的各解决方案学到页面视图控制器、分栏视图控制器、导航控制器等视图控制器的用法。
第8章,常用的控制器——iOS SDK里面有很多系统自带的控制器,开发者可以用它们来完成日常的开发任务。本章将介绍最为常用的控制器。你会学到如何从照片库中选取照片、如何拍照、如何录制并编辑视频。另外,你还会学到如何在程序中编写电子邮件及文本消息,以及如何在Twitter及Facebook等社交媒体上张贴信息。
第9章,创建并管理表格视图——表格(table)是一种可以滚动的交互类,它在屏幕较小的设备上面效果很好,在屏幕较大的平板电脑上面效果也很不错。由于表格可以把内容以一种简单而自然的方式组织起来,所以很多iOS应用程序都是以表格为中心的。本章将介绍表格的用法,解释表格的工作原理,讲解可供开发者使用的各种表格,并且告诉你如何在程序中利用表格的各种特性。
第10章,集合视图——集合(collection)视图的许多概念都与表格相同,但是功能更加强大,而且更加灵活。本章将会讲述使用集合视图所需的各种基础知识,包括如何创建可以横向滚动的列表、如何创建网格布局、如何创建圆形等特殊方式的布局,等等。你将学到怎样通过布局规格(layout specification)把视觉效果集成到集合视图里面,以及怎样使集合视图中的内容在滚动之后自动调整位置,另外,你还会学到如何利用内置的动画支持来创建出最有效的互动效果。
第11章,分享文档与数据——在iOS系统中,应用程序可以分享信息和数据,另外,开发者也可以使用系统所提供的许多特性,把控制权从一个程序转移到另一个程序。你可以用本章所介绍的几种方式在应用程序之间分享文档及数据。你将学到如何把这些特性添加到自己的应用程序之中,以及如何灵巧地使用分享功能,令自己的应用程序可以和iOS生态系统里的其他程序协同运作。
第12章,浅谈Core Data——Core Data提供了一套受托管的数据存储机制,使开发者可以在应用程序中查询并更新存储区里的数据。它提供了一套基于Cocoa Touch的对象接口,使得iOS开发者能够像使用SQL查询语句那样,通过Objective-C代码来管理关系型数据库中的数据。本章介绍Core Data。通过其中的各解决方案,你可以初步了解这项技术,同时还能以本章内容为出发点,继续深入学习Core Data。你将学到如何设计受托管的数据库存储机制、如何添加和删除数据、如何用代码查询数据,以及如何把这些操作同UIKit中的表格视图及集合视图相集成。
第13章,网络编程基础——在连接到Internet的设备上面,特别适合用iOS程序来订阅基于网络的服务。苹果公司为iOS平台提供了各种坚实的网络计算服务及支持技术。本章将介绍网络编程中的常用技术,同时也提供一些解决方案,用来简化日常的网络开发任务。本章介绍iOS 7新引入的HTTP系统,并且提供实现数据下载功能(包括后台下载)所用的一些范例代码。你还会学到如何判断网络是否可用,以及如何使用Web服务,这其中包含了一些范例代码,它们告诉你如何通过XML解析及JSON序列化来访问一些在线服务。
第14章,针对特定设备的开发——每台iOS设备都有许多属性,有些属性是该设备所独有的,而有些则是许多设备所共有的;有些属性是持续变化的,而有些则保持不变。这些属性包括设备当前的物理方向、型号名称、电池状态以及是否可以访问机体内的硬件等。本章将会讲解如何查看设备的硬件规格,以及如何查看设备中可供使用的感应器。这一章所提供的解决方案可用来查询当前设备的各项信息。
第15章,辅助功能——本章简单地介绍VoiceOver这项辅助功能,开发者可以通过该功能尽量扩大应用程序的受众。你将学到如何为应用程序添加与辅助功能有关的标签及提示,以及如何在模拟器和iOS设备中测试这些特性。
附录A,Objective-C字面量——本附录介绍了Objective-C语言里与数字、数组及字典有关的一些新特性。
对范例代码的说明 为了大家学起来方便,本书的范例代码只使用一个main.m文件。编写iPhone或Cocoa应用程序时,开发者一般都不会这么做,而且说实在的,也确实不应该这么做,但是,这种做法却非常适合展示一个大的概念。假如一份范例代码分成5个、7个或9个文件,就不太容易讲述这个概念了。而将所有代码都写到一个文件里,则有助于专门把这个概念说清楚。
书中的范例代码不应该当成独立的应用程序来用。每份范例代码只对应于一个解决方案,而且只演示一个概念。每个main.m文件都是专门为了实现某个中心概念而编写的。读者在学会这些思路之后,可以按照平常开发时所用的文件组织结构及布局方式将其转换为普通的应用程序结构。本书所用的代码组织方式与日常开发中所应提倡的标准组织方式并不相符。笔者之所以采用这种方式,是为了提供精确的解决方案,而大家可以根据需求把它们集成到自己的工作项目中。
苹果公司的标准范例代码与本书不同,你必须查看很多源文件,才能在脑中构建出一套与待演示的概念有关的“思维模型”。那些范例代码都是完整的应用程序,里面通常会涉及一些与当前所要解决的问题没有关系的任务。我们必须花很大精力才能找到与当前问题有关的代码,这是得不偿失的。
本书还有些范例代码没有遵循“一个文件只说一件事”的规则:如果某个解决方案与类的实现有关,那么本书还会提供标准的类文件及头文件。有些解决方案并不是为了强调某项技术,而是为了提供某些类及category(category是一种针对现有类所做的扩展,它不产生新的类)的实现。对于这些解决方案来说,读者可以找到单独的.m与.h文件,而main.m文件里面则封装了一份框架代码,用来描述其余的事情。
本书大多数范例代码都只使用一个应用程序标识符,也就是com.sadun.helloworld。只使用一个标识符的好处是:你的iOS设备里不会装很多范例程序。每安装一个范例程序,都会把前面那个替换掉,这样的话,设备的主屏幕就能干净一些。如果需要同时安装多个范例程序,那么只需给标识符加个后缀就可以了,例如com.sadun.helloworld.table-edits。如果想令多个应用程序所显示出来的名称各不相同,那么可以编辑自定义的显示名称。你的Team Provisioning Profile能够匹配包括com.sadun.helloworld在内的每一个应用程序标识符。这样的话,无须修改标识符,就可以把编译后的代码安装到设备上面了,只是记得要在每个项目的Build Settings中更新Code Signing Identity。
获取范例代码 你可以在开源项目托管网站GitHub中找到本书源代码。每一章的源代码都放在一个文件夹内,其中包含书里的相关范例材料。解决方案的编号与其在书中的编号相同。比方说,第5章的第6个解决方案放在C05文件夹下面的06子文件夹中。
以00为编号的项目或是编号带有后缀(例如05b、02c)的项目是为了便于搜索或创建插图而使用的素材。比方说,第9章的00 – Cell Types项目是为了创建图9-2中的效果而编写的,那张图用来演示系统所提供的各种表格视图单元格样式。一般情况下,笔者会把这些多余的项目删掉。本书初稿的读者请求笔者把它们放在这个版本中。整个代码库里大约能找到六七个这样的范例项目。
为本书出力 范例代码绝不是一成不变的,它会随着苹果公司的SDK与Cocoa Touch库而不断进化。请各位读者一起参与这个过程。你可以提交bug修复和修改书中的错误,也可以扩充现有的代码。你可以对GitHub代码库做分支(fork),自己调整代码,实现一些功能,然后再分享回主代码库里。如果你有新的想法或思路,请告诉我们。我们很乐意将你的宝贵建议加到代码库中,并据此完善本书的下一个版本。
获取git工具 你可以使用git版本控制系统来下载本书源代码。Xcode 5集成开发环境提供了非常健壮的git支持。Xcode 5工具箱里面也包含了命令行式的git工具。此外,还有大量的第三方及商业版git工具可供选择。
使用GitHub GitHub是最大的git托管网站,有超过15万个公开的代码库(repository)。它可以免费托管公开项目,也可以付费托管私有项目。该网站提供了一套可以自定义的Web界面,其中包含Wiki托管、问题追踪等功能,是项目开发者之间的一个优秀的社交网络,开发者可以在这里寻找新代码,也可以协同开发既有的程序库。你可以在GitHub网站注册免费账号,注册好之后,就可以复制并修改本书的范例代码库了,另外,也可以创建自己的开源iOS项目,并与他人分享。
Erica Sadun,是数十本畅销书的作者、合著者和供稿者,这些书涉及程序设计、数字视频、数字摄影、Web设计和其他技术主题。作为一名在iOS领域最负盛名的开发人员,她还开发了数十种iPhone自带的应用。Sadun拥有佐治亚理工学院计算机科学专业的博士学位。
Rich Wardwell,是Black Pixel的资深iOS及Mac开发者,在专业级服务器、桌面和移动领域有20多年软件开发经验,并以主要开发者的身份参与制作了很多款Apple App Store上的优秀iOS应用程序,包括USA Today及Fox News。。
爱飞翔,资深软件开发工程师,擅长Web开发、移动开发和游戏开发,有10余年开发经验,曾主导和参与了多个手机游戏和手机软件项目的开发,经验十分丰富。业余爱好文学和历史,有一定的文学造诣。翻译并出版了《Android游戏开发实践指南》、《测试驱动的iOS开发》、《HTML5 Canvas核心技术:图形、动画与游戏开发》、《NoSQL精粹》和《JavaScript应用开发实践指南》等书。
译者序
前 言
致 谢
第1章 手势与触摸 1
1.1 触摸 1
1.1.1 触摸操作所处的阶段 2
1.1.2 UIResponder类中的触摸事件响应方法 3
1.1.3 对视图的触摸 4
1.1.4 多点触摸 4
1.1.5 手势识别器 5
1.2 解决方案:添加简单的直接操纵界面 5
1.3 解决方案:添加拖动手势识别器 7
1.4 解决方案:同时使用多个手势识别器 9
1.5 解决方案:限制移动 14
1.6 解决方案:测试触摸 15
1.7 解决方案:针对位图的触摸测试 17
1.8 解决方案:根据触摸情况在屏幕上绘制内容 19
1.9 解决方案:令绘制效果变得平滑 21
1.10 解决方案:启用多点触摸 24
1.11 解决方案:检测圆圈手势 27
1.12 解决方案:创建自定义手势识别器 32
1.13 解决方案:把滚动视图中的内容拖曳到外面 34
1.14 解决方案:实时的触摸反馈 37
1.14.1 启用触摸反馈效果 38
1.14.2 拦截并转发触摸事件 38
1.14.3 实现TOUCHkit的TOUCHkitView类 40
1.15 解决方案:向视图中添加菜单 42
1.16 小结 43
第2章 构建并使用控件 45
2.1 UIControl类 45
2.1.1 目标-动作模式 46
2.1.2 控件的种类 46
2.1.3 控件事件 46
2.2 按钮 48
2.3 Interface Builder中的按钮 50
2.4 解决方案:构建按钮 51
2.4.1 多行按钮文本 54
2.4.2 为按钮添加动画元件 54
2.4.3 为按钮添加额外状态 55
2.5 解决方案:使按钮以动画效果来响应用户 55
2.6 解决方案:为滑杆控件添加自定义的滑块 57
2.6.1 定制UISlider控件 57
2.6.2 添加优化代码 58
2.7 解决方案:创建可以连续点击两次的分段选择控件 61
2.7
— 没有更多了 —
以下为对购买帮助不大的评价