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

978-7-115-30030-0
作者: 【美】Dan Pilone Tracey Pilone
译者: 杨光伟魏丹
编辑: 汪振

图书目录:

目 录

介绍

  你的大脑在思考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应用程序绝对不仅只有一个按钮,那么是时候来创造一个了。使用一些很复杂的控件,意味着你需要付出比平常更多的精力去考虑如何设计你的应用程序。在这一章中,你将学习如何把一个更大的应用程序与iOS SDK中使用的基本设计模式结合在一起。

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

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

  HIG对选择器和按键的准则 51

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

  根视图的生命周期 54

  我们需要数据 60

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

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

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

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

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

  Renee正在怀疑…… 100

  为自定义输入提供空间 101

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

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

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

  但是当Mike完成输入时…… 121

  自定义你的UITextField 123

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

  请求UITextField放弃聚焦 125

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

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

  自定义便签在哪里 132

  你的Objective-C工具箱 139

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

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

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

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

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

  建立表格试图 147

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

  只是几个饮料…… 160

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

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

  使用一个详细视图向下钻取数据 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 Girl 252

  ……被键盘挡住了 253

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

  滚动视图与屏幕尺寸一致 257

  键盘改变了可见区域 260

  iOS通知你有关键盘的事情 262

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

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

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

  数组也会发生故障 292

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

  你的iOS开发工具箱 313

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

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

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

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

  在iPad上的DrinkMixer 316

  iPad模拟器 318

  HIG同样涉及了iPad 319

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

  检查你的设备 334

  旋转是iPad的关键 337

  视图持久性的问题 345

  不要忘记tableview 346

  你的iOS开发工具箱 359

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

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

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

  HF赏金猎人 362

  一个新的iPhone控件 368

  选择一个模板开始iBountyHunter 372

  对于通用应用程序有不同的结构 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-C 588

  使用UIWebView 588

 你的NUI工具箱 599

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

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

  当你认为工作已经完成时,其实还有更多的事情。我们不会在没有给你

讲述一些额外细节的情况下就结束,有些事情只是没有合适的地方放入

书中。至少,你要能够拿着这本书四处移动,而无需一个金属轮在底部。

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

  #1.国际化和区域化 602

  区域化字符串资源 604

  #2.视图动画 606

  #3.加速计 607

  理解设备的加速度 608

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

  Quartz和OpenGL 610

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

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

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

  苹果的规矩 612

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

  在Organizer 中保持跟踪 614

详情

本书介绍了SDK和Object-C的基础知识,以及如何构建并检验简单的应用模型,并提供如何利用iPhone/iPad的相机、GPS和重力感应器进行工作的方法和技巧,最终介绍了如何优化、测试并发布已开发的应用程序。

图书摘要

相关图书

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 10 开发指南
iOS 10 开发指南

相关文章

相关课程