深入浅出iPhone/iPad开发(第2版)

深入浅出iPhone/iPad开发(第2版)
作 者: Dan Pilone Tracey Pilone 杨光伟 魏丹
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 程序设计 计算机/网络 移动开发
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Dan Pilone是Element84的创始人及合伙人。他曾经为美国国家航空航天局(NASA)、Hughes公司、ARINC、UPS和美国海军研究实验室设计并实现过系统。Dan为O’Reilly、iPhone训练营以及私人开发团队教授过许多iPhone和iPad开发课程。他曾经在华盛顿天主教大学教授项目管理、软件设计和软件工程。Tracey Pilone是Element 84的项目经理,Element 84创办于华盛顿地区,提供移动、网络和后台开发服务。她最近的项目不但包括为海军研究实验室和学术商务顾问写作的工作,而且她还参与另外几本HeadFirst图书的写作,并持续着参与Element 84的软件开发项目。

内容简介

《深入浅出iPhone/iPad开发(第2版)》是HeadFirst系列图书的一本最新力作。全书通过轻松的图文方式,由浅入深地向读者介绍SDK和Object-C的基础知识,以及如何构建并测试简单的应用模型,并提供如何利用iPhone/iPad的相机、GPS和重力感应器进行工作的方法和技巧,最终介绍了如何优化、测试并发布已开发的应用程序。《深入浅出iPhone/iPad开发(第2版)》面向各层次的苹果产品开发人员,尤其适合初学的开发者阅读使用。

图书目录

介绍

你的大脑在思考iOS开发。在这里你将尝试学习一些内容,而你的大脑则使你的学习不会太持久。你的大脑在想,“最好离开这个房间去做一些更重要的事情,比如远离野兽,或者裸体滑雪哪一个主意更糟。”因此,你如何才能骗你的大脑去思考,获取足够的知识来开发自己的iPhone和iPad应用程序呢?

这本书适合谁

元认知:关于思考的思想

下面是你可以怎样使你的大脑屈服

读我

技术审查小组

鸣谢

1 入门 使用iOS的移动终端

iPhone改变一切

iPhone 4“又一次改变了一切”。而现在你所拥有的iPad也将要改变一切。iOS设备现在能够胜任文字处理、电子阅读和摄像机的工作。它们被应用在商业和医学领域作为企业设备,而App Store作为一个平台被每一个开发人员所使用,从个人产品到大牌公司产品。苹果公司提供了软件,而我们将帮助你获得知识,我们相信你已经拥有了超级高的热情。

因此,你想要建立一个iOS应用程序……

……因为每个人都想要一个!

应用程序生活在名为iTunes的宇宙中

作出决定的时间

所有的一切都从iOS SDK开始

四处看看

Xcode包含了应用程序模板,帮助你开始创建新的应用程序

Xcode是一个全功能的集成开发环境

Xcode是你的iOS项目的枢纽

在Xcode中建立你的界面

添加按钮到你的视图中

iOS模拟器让你可以在Mac上测试你的应用程序

iDecide的逻辑

替换按钮的文本

你正在使用模型-视图-控制器模式

iDecide实际上很简单

发生了什么

使用GUI编辑器连接UI控制到代码

组件可以触发特定事件

连接你的事件到方法

你已经创建了自己的第一个iPhone应用程序!

你的iOS工具箱

2 iOS 应用程序模式 你好,Renee!

应用程序有很多移动部件。

好吧,实际上,它们没有任何真正的移动部件,但它们确实有很多的UI控件。一个典型的iOS应用程序绝对不仅只有一个按钮,那么是时候来创造一个了。使用一些很复杂的控件,意味着你需要付出比平常更多的精力去考虑如何设计你的应用程序。在这一章中,你将学习如何把一个更大的应用程序与iOS SDK中使用的基本设计模式结合在一起。

首先,我们需要想出Mike(真的)想要什么

应用程序设计规则——iOS HIG

HIG对选择器和按键的准则

为InstaEmail创建一个新的基于视图的项目

根视图的生命周期

我们需要数据

当你想要控制输入时使用选择器

选择器从数据源获取它们的数据……

3 适于iOS的Objective-C 电子邮件需要多样化

我们在第2章中做了很多,但那是什么语言?

你编写的部分代码可能看起来很熟悉,现在是时候去发现在它们之下的到底是什么了。iOS SDK有一个很棒的工具,那意味着你不需要为任何事情编写代码,但是这并不代表你编写应用程序时不需要了解一些相关的底层代码,包括属性、消息传递以及内存管理。除非你不使用它们,所有的应用程序都只用默认部件!但你想要更多的部件,不是吗?

Renee正在怀疑……

为自定义输入提供空间

头文件描述到你的类的接口

自动生成的访问器还处理内存管理

为了保持你的内存清晰明了,你只需要记住两件事情

但是当Mike完成输入时……

自定义你的UITextField

使用键盘的组件会要求它出现……

请求UITextField放弃聚焦

在Objective-C中的消息使用命名参数

当完成按键被按下时,使用消息传递告诉我们的视图控制器

自定义便签在哪里

你的Objective-C工具箱

4 多视图 一个带有视图的表格

大部分iOS应用程序的视图都不止一个。

我们编写过一个很酷的带有一个视图的应用程序,但是只要用过智能手机的人都知道,大部分应用程序并不是那样的。一些令人印象深刻的iOS应用程序,通过使用多视图处理复杂的信息,来完成一个完美的工作。我们将要开始学习导航控制器和表格视图,就像你在你的邮件和联系人程序中看到的那样。我们仅仅只需要进行一次转折……

那么,这些视图是如何结合在一起的呢

导航模板使多个视图结合在一起

建立表格试图

一个表格是一个单元格的集合

只是几个饮料……

plist是保存和加载数据的一种简单方法

数组(以及更多)内置支持plist

使用一个详细视图向下钻取数据

仔细观看详细视图

使用导航控制器在视图之间切换

导航控制器维护一个视图控制器栈

字典以键值对存储信息

调试——iOS开发的阴暗面

调试冒险旅程上的第一步:控制台

当你的应用程序运行时与其互动

Xcode在你的应用程序中断后也会给你支持

Xcode调试器显示你的应用程序的状态

你的iOS工具箱

5 plist 和模式视图 改善你的应用程序

所以,你有了一个快要完成的应用程序……

这是每一个应用程序必需的过程!你使一些功能工作,决定添加一些东西,需要一些代码重构,并回复一些从应用程序商店得到的反馈。开发一个应用程序,不会一直是一个线性的过程,而是在这个过程中不断地去学习。

一切都随着Sam而开始……

使用调试器来研究崩溃的原因

更新你的代码,使之处理一个plist的字典

详细视图需要数据

另一个键值是关键

我们有一个可用性问题

允许使用公开按键显示这里有更多详细信息

销售势头强劲

使用导航控制器按键添加饮料

按键应该创建一个新的视图

我们需要一个视图……但没必要是一个新的视图

视图控制器定义视图的行为

nib文件包含UI组件和连接……

你可以像处理其他类那样,子类化和扩展视图控制器

模式视图让用户聚焦在手头的任务

任何试图都可以呈现出模式视图

我们的模式视图没有导航栏

创建保存和取消按键

编写保存和取消动作

你的iOS工具箱

6 保存、编辑和整理数据 每个人都是一个编辑……

显示数据是很好,但是添加和编辑信息才是真正使应用程序能够运行的关键。

DrinkMixer是伟大的——它使用了一些单元格自定义,并使用plist字典来显示数据。它是一个有借鉴意义的应用程序,你已经在添加新饮料上有了一个良好的开端。现在,是时候给用户修改数据(保存、编辑和整理)的能力了,使它对每个人都更有用。在这一章中,我们会看看iOS应用程序中的编辑模式,以及如何引导用户使用导航控制器。

Sam准备添加一个Red-Headed School Girl

……被键盘挡住了

将你的内容装进一个滚动视图

滚动视图与屏幕尺寸一致

键盘改变了可见区域

iOS通知你有关键盘的事情

在默认通知中心为事件注册

键盘事件告诉你键盘的状态和大小

表格视图不知道它的数据已经改变

数组也会发生故障

表格视图已经内置了对编辑和删除的支持

你的iOS开发工具箱

Sam有了另一个项目的想法……

7 向iPad 迁移 我们需要更多的空间

iPhone很伟大,但是屏幕再大一点会更好。

当iPad第一次出现时,一些评论批评它“只是一部大点儿的iPhone”(但是,唔,它不是电话)。在很多方面,屏幕创造了很多机会,给予用户更好的交互体验。更大的屏幕意味着阅读会更舒适,网页会更容易查看,并且使设备看起来更像是一本书,或者一个日历,或者你已经知道如何使用的其他很多事物,例如一个菜单……

在iPad上的DrinkMixer

iPad模拟器

HIG同样涉及了iPad

使用Xcode来建立你的通用应用程序

检查你的设备

旋转是iPad的关键

视图持久性的问题

不要忘记tableview

你的iOS开发工具箱

8 标签栏和核心数据 企业应用程序

企业应用程序意味着以不同方式管理更多的数据。

大大小小的公司是iPhone和iPad应用程序的重要市场。一个带有定制应用程序的小型手持设备,可以在员工外出办事时为公司做出巨大贡献。大多数这种类型的应用程序是用来管理大量数据的,而且自从iOS 3.0,开始有了内置的核心数据支持。有了核心数据和另外一个新的控制器(标签栏控制器),我们可以为正义建立一个应用程序!

HF赏金猎人

一个新的iPhone控件

选择一个模板开始iBountyHunter

对于通用应用程序有不同的结构

画出iBountyHunter iPhone如何工作……

……以及它如何适应通用应用程序

创建逃犯列表视图

记下来:抓获视图

一个视图的内容实际上是子视图

在与Bob的快速会面之后……

核心数据让你聚焦在你的应用程序

核心数据需要知道去加载什么

核心数据使用一个管理对象模型描述一个实体

建立你的逃犯实体

使用一个NSFetchRequest去描述你的搜索

Bob的数据库是一个资源

返回核心数据堆栈

模板为一个SQLite DB建立东西

iOS应用程序是只读的

iPhone的应用程序结构定义了你可以在哪里读取和写入

复制数据库到Documents目录

你的核心数据工具箱

9 核心数据的迁移和优化 事情改变了

我们有了一个伟大的应用程序在工作。

iBountyHunter成功加载了Bob需要的数据,让他可以简单地查看逃犯。但是,当数据发生改变时会怎么样?Bob需要一些新的功能,那会对数据模型做些什么?在本章中,你将学会如何处理你的数据模型变化,以及如何使用更多的核心数据特性。

Bob需要文档

任何事情都源于我们的对象模型

数据没有被更新

数据迁移是一个常见的问题

迁移旧的数据到新的模型

Xcode让你轻松地命名数据模型版本

核心数据可以“轻量化”迁移数据

这里是你目前为止所做的……

Bob有一些设计想法

你的应用程序拥有自己的生命周期……

多任务衔接的规则

给Bob的一个快速演示

为过滤数据使用判断

我们需要在NSFetchRequest上设置一个判断

核心数据控制器类提供高效率的结果处理

一些高效的一体化流程

创建新的FetchedResultsController获取方法

我们需要刷新数据

你的数据工具箱

10 照相机、地图套件与核心位置 现实世界中的证明iOS设备知道它们在哪里且看到了什么。

任何iPhone、iPod Touch或者iPad的用户都会知道,这些设备不仅仅只是管理数据,它们还可以拍摄照片,找出你的位置,并通过应用程序把那些信息放在一起。这些华丽的功能只需通过点击进入iOS提供给你的工具就可以实现,你可以很轻松地导入图片、位置和地图,而不需使用很多的代码。

对于Bob来说,支付需要证明

应用照相机的方式……

有方法进行检查

使用动作表单提示用户

Bob除了时间以外,还需要位置

核心位置可以通过多种方法找到你

添加一个新的框架

只是纬度和经度没有为Bob工作

iOS中的地图套件

为地图做一些小的自定义设置

注解需要多一些的工作技巧

完整执行注解协议

你的位置工具箱

11 iPad UI 自然的界面

iPad是关于现实世界中存在的一切。

我们已经在前几章为一个已有的应用程序DrinkMixer建立了一个基本的iPad端口,但现在是时候来建立一个界面,让它与一些现实世界的东西一起工作了。通过模仿人们在现实世界使用的东西,用户在打开应用程序时会知道如何使用该界面。我们将使用一些现实世界的元素,帮助Bob抓住坏人……

Bob也需要iPad应用程序……

iOS HIG用户体验指南

你的界面也要迭代式

BountyHunterHD是基于一个分拆视图控制器的

统一自定义的东西

似乎我们有一个麻烦……

UIWebview有很多选项

HTML、CSS和Objective-C

使用UIWebView

你的NUI工具箱

12 遗留问题 主要的4件事情(我们没有讲述的)

究竟是不是有什么事情没有说呢?我们知道你想说什么……

当你认为工作已经完成时,其实还有更多的事情。我们不会在没有给你讲述一些额外细节的情况下就结束,有些事情只是没有合适的地方放入书中。至少,你要能够拿着这本书四处移动,而无需一个金属轮在底部。

因此,瞥一眼,看看你(仍然)可能错过了什么。

1.国际化和区域化

区域化字符串资源

2.视图动画

3.加速计

理解设备的加速度

4.一两句话简单地说说游戏……

Quartz和OpenGL

13 准备发布一个应用程序 为App Store做好准备

你想要让你的应用程序到App Store,对吗?

目前为止,我们已经在模拟器中基本完成了应用程序,一切都很好。但是要让事情进入下一个阶段,你需要在申请一个应用程序进入App Store之前,在一部真正的iPhone、iPad或iPod Touch上安装这个应用程序。而唯一可以做到这件事情的方法,是注册成为苹果的开发者。即使这样,也不仅仅是在Xcode中点击一个按键,让你编写的应用程序安装到个人设备上的问题。要做到这一点,现在是时候与苹果公司谈谈了。

苹果的规矩

配置文件把它们整合到一起

在Organizer 中保持跟踪

……