深入浅出iPhone Pad开发(第2版) PDF扫描版[137MB] PDF 免费下载

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

《深入浅出iPhone/iPad开发(第2版)》面向各层次的苹果产品开发人员,尤其适合初学的开发者阅读使用。

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

介绍
你的大脑在思考iOS开发。在这里你将尝试学习一些内容,而你的大脑则使你的学习不会太持久。你的大脑在想,“最好离开这个房间去做一些更重要的事情,比如远离野兽,或者裸体滑雪哪一个主意更糟。”因此,你如何才能骗你的大脑去思考,获取足够的知识来开发自己的iPhone和iPad应用程序呢?
这本书适合谁xxiv
元认知:关于思考的思想xxvii
下面是你可以怎样使你的大脑屈服xxix
读我xxx
技术审查小组xxxii
鸣谢xxxiii
1 入门使用iOS的移动终端
iPhone改变一切
iPhone 4“又一次改变了一切”。而现在你所拥有的iPad也将要改变一切。iOS设备现在能够胜任文字处理、电子阅读和摄像机的工作。它们被应用在商业和医学领域作为企业设备,而App Store作为一个平台被每一个开发人员所使用,从个人产品到大牌公司产品。苹果公司提供了软件,而我们将帮助你获得知识,我们相信你已经拥有了超级高的热情。
因此,你想要建立一个iOS应用程序……2
……因为每个人都想要一个!3
应用程序生活在名为iTunes的宇宙中4
作出决定的时间5
所有的一切都从iOS SDK开始6
四处看看7
Xcode包含了应用程序模板,帮助你开始创建新的应用程序8
Xcode是一个全功能的集成开发环境9
Xcode是你的iOS项目的枢纽10
在Xcode中建立你的界面14
添加按钮到你的视图中15
iOS模拟器让你可以在Mac上测试你的应用程序17
iDecide的逻辑18
替换按钮的文本19
你正在使用模型-视图-控制器模式23
iDecide实际上很简单24
发生了什么26
使用GUI编辑器连接UI控制到代码27
组件可以触发特定事件28
连接你的事件到方法29
你已经创建了自己的第一个iPhone应用程序!31
你的iOS工具箱39
2 iOS 应用程序模式你好,Renee!
应用程序有很多移动部件。
好吧,实际上,它们没有任何真正的移动部件,但它们确实有很多的UI控件。一个典型的iOS应用程序绝对不仅只有一个按钮,那么是时候来创造一个了。使用一些很复杂的控件,意味着你需要付出比平常更多的精力去考虑如何设计你的应用程序。在这一章中,你将学习如何把一个更大的应用程序与iOSSDK中使用的基本设计模式结合在一起。
首先,我们需要想出Mike(真的)想要什么43
应用程序设计规则——iOS HIG48
HIG对选择器和按键的准则51
为InstaEmail创建一个新的基于视图的项目52
根视图的生命周期54
我们需要数据60
当你想要控制输入时使用选择器61
选择器从数据源获取它们的数据……62
3 适于iOS的Objective-C电子邮件需要多样化
我们在第2章中做了很多,但那是什么语言?
你编写的部分代码可能看起来很熟悉,现在是时候去发现在它们之下的到底是什么了。iOS SDK有一个很棒的工具,那意味着你不需要为任何事情编写代码,但是这并不代表你编写应用程序时不需要了解一些相关的底层代码,包括属性、消息传递以及内存管理。除非你不使用它们,所有的应用程序都只用默认部件!但你想要更多的部件,不是吗?
Renee正在怀疑……100
为自定义输入提供空间101
头文件描述到你的类的接口103
自动生成的访问器还处理内存管理109
为了保持你的内存清晰明了,你只需要记住两件事情111
但是当Mike完成输入时……121
自定义你的UITextField123
使用键盘的组件会要求它出现……124
请求UITextField放弃聚焦125
在Objective-C中的消息使用命名参数127
当完成按键被按下时,使用消息传递告诉我们的视图控制器 128
自定义便签在哪里132
你的Objective-C工具箱139
4 多视图一个带有视图的表格
大部分iOS应用程序的视图都不止一个。
我们编写过一个很酷的带有一个视图的应用程序,但是只要用过智能手机的人都知道,大部分应用程序并不是那样的。一些令人印象深刻的iOS应用程序,通过使用多视图处理复杂的信息,来完成一个完美的工作。我们将要开始学习导航控制器和表格视图,就像你在你的邮件和联系人程序中看到的那样。我们仅仅只需要进行一次转折……
那么,这些视图是如何结合在一起的呢145
导航模板使多个视图结合在一起146
建立表格试图147
一个表格是一个单元格的集合152
只是几个饮料……160
plist是保存和加载数据的一种简单方法162
数组(以及更多)内置支持plist165
使用一个详细视图向下钻取数据168
仔细观看详细视图169
使用导航控制器在视图之间切换179
导航控制器维护一个视图控制器栈180
字典以键值对存储信息184
调试——iOS开发的阴暗面187
调试冒险旅程上的第一步:控制台188
当你的应用程序运行时与其互动189
Xcode在你的应用程序中断后也会给你支持190
Xcode调试器显示你的应用程序的状态191
你的iOS工具箱195
5 plist 和模式视图改善你的应用程序
所以,你有了一个快要完成的应用程序……
这是每一个应用程序必需的过程!你使一些功能工作,决定添加一些东西,需要一些代码重构,并回复一些从应用程序商店得到的反馈。开发一个应用程序,不会一直是一个线性的过程,而是在这个过程中不断地去学习。
一切都随着Sam而开始……198
使用调试器来研究崩溃的原因200
更新你的代码,使之处理一个plist的字典203
详细视图需要数据206
另一个键值是关键207
我们有一个可用性问题213
允许使用公开按键显示这里有更多详细信息215
销售势头强劲218
使用导航控制器按键添加饮料223
按键应该创建一个新的视图227
我们需要一个视图……但没必要是一个新的视图228
视图控制器定义视图的行为229
nib文件包含UI组件和连接……230
你可以像处理其他类那样,子类化和扩展视图控制器231
模式视图让用户聚焦在手头的任务236
任何试图都可以呈现出模式视图237
我们的模式视图没有导航栏242
创建保存和取消按键244
编写保存和取消动作245
你的iOS工具箱249
6 保存、编辑和整理数据每个人都是一个编辑……
显示数据是很好,但是添加和编辑信息才是真正使应用程序能够运行的关
键。
DrinkMixer是伟大的——它使用了一些单元格自定义,并使用plist字典来显示数据。它是一个有借鉴意义的应用程序,你已经在添加新饮料上有了一个良好的开端。现在,是时候给用户修改数据(保存、编辑和整理)的能力了,使它对每个人都更有用。在这一章中,我们会看看iOS应用程序中的编辑模式,以及如何引导用户使用导航控制器。
Sam准备添加一个Red-Headed School Girl252
……被键盘挡住了253
将你的内容装进一个滚动视图255
滚动视图与屏幕尺寸一致257
键盘改变了可见区域260
iOS通知你有关键盘的事情262
在默认通知中心为事件注册263
键盘事件告诉你键盘的状态和大小269
表格视图不知道它的数据已经改变288
数组也会发生故障292
表格视图已经内置了对编辑和删除的支持300
你的iOS开发工具箱313
Sam有了另一个项目的想法……314
7 向iPad 迁移我们需要更多的空间
iPhone很伟大,但是屏幕再大一点会更好。
当iPad第一次出现时,一些评论批评它“只是一部大点儿的iPhone”(但是,唔,它不是电话)。在很多方面,屏幕创造了很多机会,给予用户更好的交互体验。更大的屏幕意味着阅读会更舒适,网页会更容易查看,并且使设备看起来更像是一本书,或者一个日历,或者你已经知道如何使用的其他很多事物,例如一个菜单……
在iPad上的DrinkMixer316
iPad模拟器318
HIG同样涉及了iPad319
使用Xcode来建立你的通用应用程序326
检查你的设备334
旋转是iPad的关键337
视图持久性的问题345
不要忘记tableview346
你的iOS开发工具箱359
8 标签栏和核心数据企业应用程序
企业应用程序意味着以不同方式管理更多的数据。
大大小小的公司是iPhone和iPad应用程序的重要市场。一个带有定制应用程序的小型手持设备,可以在员工外出办事时为公司做出巨大贡献。大多数这种类型的应用程序是用来管理大量数据的,而且自从iOS 3.0,开始有了内置的核心数据支持。有了核心数据和另外一个新的控制器(标签栏控制器),我们可以为正义建立一个应用程序!
HF赏金猎人362
一个新的iPhone控件368
选择一个模板开始iBountyHunter372
对于通用应用程序有不同的结构374
画出iBountyHunter iPhone如何工作……376
……以及它如何适应通用应用程序377
创建逃犯列表视图382
记下来:抓获视图384
一个视图的内容实际上是子视图392
在与Bob的快速会面之后……394
核心数据让你聚焦在你的应用程序396
核心数据需要知道去加载什么397
核心数据使用一个管理对象模型描述一个实体398
建立你的逃犯实体399
使用一个NSFetchRequest去描述你的搜索410
Bob的数据库是一个资源417
返回核心数据堆栈418
模板为一个SQLite DB建立东西419
iOS应用程序是只读的421
iPhone的应用程序结构定义了你可以在哪里读取和写入422
复制数据库到Documents目录423
你的核心数据工具箱444
9 核心数据的迁移和优化事情改变了
我们有了一个伟大的应用程序在工作。
iBountyHunter成功加载了Bob需要的数据,让他可以简单地查看逃犯。但是,当数据发生改变时会怎么样?Bob需要一些新的功能,那会对数据模型做些什么?在本章中,你将学会如何处理你的数据模型变化,以及如何使用更多的核心数据特性。
Bob需要文档446
任何事情都源于我们的对象模型449
数据没有被更新452
数据迁移是一个常见的问题453
迁移旧的数据到新的模型454
Xcode让你轻松地命名数据模型版本455
核心数据可以“轻量化”迁移数据457
这里是你目前为止所做的……461
Bob有一些设计想法462
你的应用程序拥有自己的生命周期……472
多任务衔接的规则473
给Bob的一个快速演示476
为过滤数据使用判断478
我们需要在NSFetchRequest上设置一个判断479
核心数据控制器类提供高效率的结果处理486
一些高效的一体化流程487
创建新的FetchedResultsController获取方法488
我们需要刷新数据493
你的数据工具箱499
10 照相机、地图套件与核心位置现实世界中的证明
iOS设备知道它们在哪里且看到了什么。
任何iPhone、iPod Touch或者iPad的用户都会知道,这些设备不仅仅只是管理数据,它们还可以拍摄照片,找出你的位置,并通过应用程序把那些信息放在一起。这些华丽的功能只需通过点击进入iOS提供给你的工具就可以实现,你可以很轻松地导入图片、位置和地图,而不需使用很多的代码。
对于Bob来说,支付需要证明502
应用照相机的方式……511
有方法进行检查521
使用动作表单提示用户522
Bob除了时间以外,还需要位置528
核心位置可以通过多种方法找到你534
添加一个新的框架536
只是纬度和经度没有为Bob工作544
iOS中的地图套件545
为地图做一些小的自定义设置546
注解需要多一些的工作技巧553
完整执行注解协议554
你的位置工具箱561
11 iPad UI自然的界面
iPad是关于现实世界中存在的一切。
我们已经在前几章为一个已有的应用程序DrinkMixer建立了一个基本的iPad端口,但现在是时候来建立一个界面,让它与一些现实世界的东西一起工作了。通过模仿人们在现实世界使用的东西,用户在打开应用程序时会知道如
何使用该界面。我们将使用一些现实世界的元素,帮助Bob抓住坏人……
Bob也需要iPad应用程序……564
iOS HIG用户体验指南567
你的界面也要迭代式568
BountyHunterHD是基于一个分拆视图控制器的570
统一自定义的东西580
似乎我们有一个麻烦……585
UIWebview有很多选项586
HTML、CSS和Objective-C588
使用UIWebView588
你的NUI工具箱599
i 遗留问题主要的4件事情(我们没有讲述的)
究竟是不是有什么事情没有说呢?我们知道你想说什么……
当你认为工作已经完成时,其实还有更多的事情。我们不会在没有给你
讲述一些额外细节的情况下就结束,有些事情只是没有合适的地方放入
书中。至少,你要能够拿着这本书四处移动,而无需一个金属轮在底部。
因此,瞥一眼,看看你(仍然)可能错过了什么。
#1.国际化和区域化602
区域化字符串资源604
#2.视图动画606
#3.加速计607
理解设备的加速度608
#4.一两句话简单地说说游戏……609
Quartz和OpenGL610
ii 准备发布一个应用程序为App Store做好准备
你想要让你的应用程序到App Store,对吗?
目前为止,我们已经在模拟器中基本完成了应用程序,一切都很好。但是要让事情进入下一个阶段,你需要在申请一个应用程序进入App Store之前,在一部真正的iPhone、iPad或iPod Touch上安装这个应用程序。而唯一可以做到这件事情的方法,是注册成为苹果的开发者。即使这样,也不仅仅是在Xcode中点击一个按键,让你编写的应用程序安装到个人设备上的问题。要做到这一点,现在是时候与苹果公司谈谈了。
苹果的规矩612
配置文件把它们整合到一起613
在Organizer 中保持跟踪614

截图:


发表回复