用心设计您的应用程序
如果您是 iOS 应用程序开发的新手,可能想知道从哪里开始应用程序的开发过程。有了应用程序的初步构思后,您需要将这种想法转换为实现应用程序的行动计划。从设计角度而言,您需要作出把想法实现的最佳步骤的一些高层次的决定。接着您可以开始开发应用程序。
《iOS App Programming Guide》(iOS 应用程序编程指南)详细解释了本文中提及的许多概念、架构和技巧。
做最初设计
设计应用程序的方法有很多,而且许多最佳方式都不涉及编写代码。好的应用程序源自好的想法,然后将这些想法扩展为更加完整的产品描述。在设计阶段早期,你需要搞清楚您要应用程序做到些什么。记下实现您的想法所需的那些高级功能。根据您认为用户的需要,确定那些功能的优先级。对 iOS 本身做一点调研,以便了解其功能,以及您可如何使用它们来实现目标。在纸上草拟一些粗略的界面设计,以直观显示您的应用程序可能的样子。
初始设计的目标,是回答有关应用程序的一些非常重要的问题。功能集合和界面的粗略设计,有助于思考在开始编写代码后,需要哪些东西。在某个阶段,您需要将应用程序显示的信息转换为一组数据对象。同样,应用程序的外观,对您在实施用户界面代码时必须做出的选择,具有压倒性的影响。在纸上(而不是在电脑上)做最初的设计,尽可天马行空,想出的答案不必限于那些容易做到的东西。
当然,在开始设计前可以做的最重要事情,是阅读《iOS Human Interface Guidelines》(iOS 用户界面指南)。这本书介绍了进行最初设计的一些策略。它还为如何创建在 iOS 中运行良好的应用程序,给出了提示和指导。《iOS Technology Overview》(iOS 技术概述)描述 iOS 的功能,以及如何使用这些功能实现您的设计目标。
将您的最初设计转换为行动计划
iOS 假定所有应用程序都是使用“模型-视图-控制器”设计模式构建的。因此,您迈向实现此目标的前几步,是选取适合应用程序的数据和视图部分的方法。
选取适合数据模型的基本方法:
现有数据模型代码——如果您已经采用基于 C 程序设计语言编写的数据模型代码,可以将该代码直接集成到 iOS 应用程序。由于 iOS 应用程序是采用 Objective-C 编写的,它们正好配合用其他基于 C 程序设计语言编写的代码。当然,还有一个好处,是能够针对任何非 Objective-C 的代码编写 Objective-C 包装器。
自定对象数据模型——自定对象通常将某些简单数据(字符串、数字、日期、URL 等)与业务逻辑相结合,业务逻辑是管理此类数据并确保其一致性所需要的。自定对象可将标量值和指针的组合储存到其他对象中。例如,Foundation 框架定义的类,用于许多简单数据类型,并用于储存一组其他对象。这些类使得定义您自己的自定对象更轻松。
结构化数据模型——如果您的数据是高度结构化的(也就是说,该数据适合储存在数据库中),请使用 Core Data(或 SQLite)储存数据。Core Data 提供简单的、面向对象的模型来管理结构化数据。它还提供对部分高级功能(如撤销和 iCloud)的内建支持。(SQLite 文件不能与 iCloud 结合使用。)
决定是否需要支持文稿:
文稿的工作是管理应用程序的内存数据模型对象,并协调将此类数据储存在磁盘上的对应文件(或一组文件)中。文稿通常意味着用户创建的文件,但应用程序也可以使用文稿来管理那些不面向用户的文件。使用文稿的一大好处,是
UIDocument
类让其与 iCloud 和本地文件系统的交互变得更简单。对于使用 Core Data 储存内容的应用程序,UIManagedDocument
类提供类似支持。选取用于用户界面的方法:
构造块方法——创建用户界面的最简单方法,是使用现有的视图对象来组装界面。视图表示视觉元素,如表格、按钮、文本栏等。您按原样使用许多视图,但也可以根据需要,自定标准视图的外观和行为,以满足您的需求。您还可以使用自定视图,实现新的视觉元素,并将此类视图与界面中的标准视图自由混合。视图的优势是它们提供一致的用户体验,以及可让您使用相对较少的代码,快速定义复杂的界面。
基于 OpenGL ES 的方法——如果应用程序需要频繁更新屏幕或复杂的渲染,您可能需要直接使用 OpenGL ES 绘制内容。OpenGL ES 主要用于大程度利用复杂的图形,并因此需要尽可能最佳的性能的游戏和应用程序。
开始应用程序创建过程
制定好行动计划后,该是时候开始编程了。如果您是编写 iOS 应用程序的新手,最好花时间浏览提供用于开发的初始 Xcode 模板。这些模板大幅简化了您必须完成的工作,使得您可以在几分钟内就做好一个应用程序来运行。这些模板还可让您自定初始项目,以更精确地支持具体需求。为了实现这一目标,在创建 Xcode 项目时,您心中应该已经有了以下问题的答案:
应用程序的基本界面风格是什么?不同类型的应用程序,需要不同的一组初始视图和视图控制器。了解您计划如何组织用户界面,可让您选择最能满足需求的初始项目模板。您还是可以在后面更改用户界面,但一开始就选取最适合的模板,可使启动项目更加简单。
您是要创建通用应用程序,还是专门针对 iPad 或 iPhone 的应用程序?创建通用应用程序,需要为 iPad 和 iPhone 指定不同的一组视图和视图控制器,并在运行时动态选择合适的那一组。首选是通用的应用程序,因为它们支持更多的 iOS 设备,但需要您更好地分解代码以适合每个平台。
您要应用程序使用串联图吗?串联图通过显示用户界面的视图和视图控制器及它们之间的转换,简化了设计流程。iOS 5 和更高版本支持串联图,新项目是默认启用的。如果应用程序必须在较早版本的 iOS 上运行,则不能使用串联图,而应该继续使用 nib 文件。
您要将 Core Data 用于数据模型吗?某些类型的应用程序本身就适合结构化数据模型,这让使用 Core Data 成为它们的理想候选方式。
在安装 Xcode、配置 iOS 开发团队,并在 Xcode 中创建应用程序项目后,就可以开始开发应用程序了。以下应用程序开发阶段是通用的:
开始编写应用程序的主要代码。
对于新的应用程序,最好先开始创建与应用程序的数据模型关联的类。这些类通常不依赖应用程序的其他部分,而且应该是最初可处理的内容。然后是着手构建用户界面的设计,方法是将视图添加到主串联图或 nib 文件。从这些视图,您还可以着手确定代码中哪些部分需要反应界面相关的变动。如果应用程序支持 iCloud,应该在早期阶段就将 iCloud 支持集成到类。
添加对应用程序状态更改的支持。
在 iOS 中,应用程序的状态,决定了允许执行什么操作及何时执行操作。应用程序状态由应用程序中的高级对象管理,但也可以影响许多其他对象,因此,您需要考虑当前应用程序状态,如何影响数据模型和视图代码,并相应更新代码。
创建支持应用程序所需的资源。
要求提交到 App Store 的应用程序具有特定资源(如图标和启动画面),以提高整体的用户体验。分解良好的应用程序,会大量使用资源文件,来保持代码与代码所操控的数据相分离。此类分解使对应用程序进行本地化、对其外观进行调整和执行其他任务更加简单,并且无需重新编写任何代码。
根据需要,实施任何与应用程序相关的应用程序特定行为。
有多种方法用于修改应用程序启动或与系统交互的方式。例如,您可以针对某个功能实施本地通知。
添加高级功能,使应用程序变得独一无二。
iOS 包括许多其他框架,用于管理多媒体、高级渲染、游戏内容、地图、通讯录、位置跟踪和许多其他高级功能。《iOS Technology Overview》(iOS 技术概述)概述可集成到应用程序的框架和功能。
为应用程序调整一些基本的性能。
所有 iOS 应用程序,都应该经过调整来实现可能的最佳性能。调整后的应用程序运行得更快,也更高效地使用系统资源,如内存和电池电量。
迭代。
应用程序开发是一个迭代过程。添加新功能时,您可能需要重新访问前期的部分或全部步骤,才能调整现有代码。
© 2013 Apple Inc. 保留一切权利。(上次更新:2013 年 4 月 23 日)