构建一款App之App开发过程

App开发过程

设计用户界面

定义交互

教程: Storyboard

(构建一款app一章中包含四个小节:App开发过程、设计用户界面、定义交互以及教程,本文是第一小节)

App开发过程

虽然开发一款app可能会令人心生畏惧,但这个过程可以被分为几个容易理解消化的部分。在你首次开发app的过程中,这些步骤将帮开启app开发之旅并为你指引正确的方向。

定义概念

每款伟大的app都始于一个概念。

直达概念最有效的方法是思考你想通过app解决什么问题。伟大的app只解决一个定义明确的问题。比如设置应用程序允许用户调整设备上所有的设置,它为用户提供了单个界面来完成相关的设置任务。

以下直达概念需要考虑的一些关键问题:

1.你的用户是谁?应用程序的概念和体验将会根据你是要开发一款儿童游戏、一个to-do list应用还是一个学习测试app而所有不同。

2.应用程序的目标是什么?对app而言,有一个清晰的目标非常重要,而理解是什么因素促使用户使用app是界定应用程序目的的一部分。

3.你的应用要解决用户什么样的问题?一款app应当解决用户的单个问题,而不是为多个不同的问题提供解决方案。如果你发现你的应用程序正试图解决不相关的问题,那你可以能要考虑开发多个app了。

4.你的应用程序包含什么内容?考虑你的应用程序为用户提供什么内容,以及用户如何与之进行交互。通过用户界面设计对app呈现的内容类型进行补充。

在应用程序开发之初,app的概念并不需要多吸引人,也不需要是一个完整的概念,但可帮你厘清将要去往何方以及到达目的地所需的东西。

设计用户界面

在你有了app概念之后,创建一个成功应用程序的下一步就是设计一个优秀的用户界面。用户需要以最简单的方式与app进行交互。设计界面的时候要始终考虑到用户,并使界面保持高效、清晰以及简单直接。

在用户界面设计过程中,最大的挑战可能是把你的概念落实到设计当中,并实现该设计。为了简化这个过程,你可以使用storyboards。 Storyboards可以让你通过使用图形界面一步完成界面的设计与实现。你可以准确知晓当前正在创建的一切,对哪部分运行正常与否获得即时反馈,并对 界面进行即时可视化的改变。

使用storyboard创建用户界面,你就是在与views打交道,View就是用来向用户展示内容的。在Tutorial: Basics中你开始在storyboard场景中使用单个视图为ToDoList app创建用户界面。如果你要开发更为复杂的app,那你将使用更多场景和视图来创建用户界面。

在Tutorial: Storyboards中,你将通过使用几个不同视图来展示不同类型的内容,从而为ToDoList app创建用户界面。你可以在“Designing a User Interface”中学习更多关于使用views和storyboards来设计和创建用户界面。

定义交互

如果没有逻辑支撑,一个界面并没有很大用处。创建界面后,你得通过代码来定义用户与界面的交互,并在界面上对用户的操作做出反馈。

在考虑为应用添加行为之前,理解iOS app是事件驱动编程非常重要。在事件驱动编程中,app的工作流由事件:系统事件或者用户操作来决定。用户在界面上执行操作会在app中触发事件。这些 事件会执行app的逻辑并进行数据处理,然后app对用户操作的响应会反馈到界面上。

当定义用户与界面的交互时,你要把事件驱动编程牢记在心。因为用户在控制着何时执行app代码的特定部分,而不是开发者,你想要确定用户可以执行哪个操作,以及对这些操做给予什么样的反馈。

你在视图控制器中定义大部分事件响应逻辑。你可以在“Defining the Interaction”中学会更多关于使用视图控制器的内容。之后,你将会在Tutorial: Storyboards中,把这些概念应用于为ToDoList app添加功能和交互。

执行行为

在定义完用户可在app中执行的操作后,你需要通过代码实现这些行为。

为iOS app写代码,其实很多时候你是在与Objective-C编程语言打交道。你将在第三个模块学习更多关于Objective-C的内容,不过现在你需要 了解一些关于该语言的基本词汇术语。Objective-C是在C语言的基础上进行了扩充,并提供了面向对象的性能和dynamic runtime。你会在Objective-C中看到很多熟悉的元素,比如primitive types (int, float, and so on), structures, functions, pointers以及control flow constructs (while, if...else, and for statements).你也可以访问标准的C库例程,比如stdlib.h和stdio.h中的那些声明。

对象是app的建筑模块

当你创建iOS app时,你大部分时间都花在了使用对象上。

对象用相关行为来封装数据。你可以把应用程序当做一个包含相互连接的对象的大系统,这些对象相互沟通以解决某个特定问题,比如展示可视化的界面,响 应用户的输入,或者存储信息。你可以使用多个不同类型的对象来创建应用程序,从界面元素(比如按钮和标签),到数据对象(比如字符串和数组)。

类是对象的蓝图

类是对任何特定类型对象的行为和共同属性的描述。

多个以相同方式根据相同蓝图构建的building在结构上是完全相同的,类的每个实例和该类的其他实例共享相同的属性和行为。你可以编写自己的类,或者使用已经为你定义好的框架类。

你通过创建某个特定类的实例来创建对象。你可以通过可接受的默认值进行分配和初始化。当指定一个对象时,你要为对象留出足够的内存,并把所有实例变量设置为0。

Initialization设置一个对象的初始化状态--也就是说,它的实例变量和属性--至合理的值,并返回对象。初始化的目的是返回一个可用的对象。你需要指定和初始化一个对象,以便可以使用它。

Objective-C中的一个基本概念是类的继承,一个类继承了其父类的行为。当一个类继承自另一个类,那么子类继承了父类定义的所有行为和属性。子类可以定义自己额外的行为和属性,或者覆写父类的行为。所以你可以扩展类的行为,而无需复制类现有的行为。

对象通过信息进行通信

对象运行时通过互发信息进行交互。在Objective-C术语中,一个对象通过调用该对象上的方法来向另一个对象发送信息。

虽然有多个方法可在Objective-C对象之间发送信息,但目前最常用的方法是使用方括号的基本语法。如果你有一个XYZPerson类对象somePerson,你可以像下边这样给它发送sayHello信息。

  1. [somePerson sayHello];

下图左边是消息的接收者somePerson。右边sayHello是调用接收者的方法的名称。换句话说,当执行以上代码,somePerson将会接收到sayHello信息。

Protocol定义消息契约

protocol定义了一组在特定情况下的预期对象行为。protocol采用编程接口形式,一个任何类都可以选择实现的形式。使用protocol,两个通过继承关系较远的类能相互通信以完成某个特定的目标,比如解析XML代码或者复制对象。

为其他类提供有用行为的类可为匿名发送该行为声明编程接口。任何其他类可以选择采用protocol,利用行为实现一个或多个该协议的方法。

合并数据

在执行了应用行为后,你可以创建一个数据模型以支持app的界面。一款应用的数据模型定义了你在app中维持数据的方式。数据模型可以从对象的基本字典变成复杂的数据库。

你的应用程序的数据模型应该反映app的内容和目的。界面和数据之间应该有一个清晰的相关性,即便用户并不会直接与数据进行交互。

一个好的数据模型非常有利于为app创建一个坚实的基础。也让创建一个可扩展的应用变得更加简单,改善应用功能,并对应用特性做出更改。你将会在“Incorporating the Data”中学到更多关于定义数据模型的内容。

使用正确的资源

设计模式是解决应用程序中常见问题的最佳实践。使用设计模式可帮你明确数据模型的结构,以及其与app其他部分之间的交互。若理解并使用正确的设计模式,你就可以更加简单高效地创建应用。你将会在“Using Design Patterns”中学到更多关于设计模式的内容。

当你开始实现你的模型时,记住你无需从零实现每一步,已有大量框架为你构建自己的应用提供了既有的功能。例如Foundation框架包含了代表基 本数据类型的类--比如字符串和数字--以及储存其他对象的集合类。可能的话,推荐你使用既有的框架类--或者他们的子类来添加应用的功能--而不是视图 重新实现它们的功能,这样你就可以创建出一款高效的实用的精细的应用程序。你将在“Working with Foundation”中学习到更多关于Foundation框架的知识。

通常,你会编写自定义类作为数据模型的一部分。编写自定义类可以让你掌控如何组织应用的内部结构。你将在“Writing a Custom Class”中学会更多关于编写自定义类的知识。

合并真实数据

当首次测试数据模型时,你可能会想要使用静态或者伪造的数据。这种方法你不用担心要提供真实的数据,直到模型装配和连接正确。在定义好的数据模型正 常工作后,你就可以把真实数据置于应用中。该指南剩余的部分可以帮你遍历这些步骤中的每一个细节。随着你在“App Development Process”中的学习,你会在该教程中学会必要的概念并运用到实践中。

转自:http://www.cocoachina.com/newbie/basic/2014/0314/7974.html

从今天开始学习iOS开发(iOS 7版)-- 构建一款App之App开发过程 (二)相关推荐

  1. iOS开发--iOS及Mac开源项目和学习资料

    文/零距离仰望星空(简书作者) 原文链接:http://www.jianshu.com/p/f6cdbc8192ba 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". ...

  2. 精通iOS开发(第5版)

    <精通iOS开发(第5版)> 基本信息 原书名:Beginning ios 6 development:exploring the ios sdk 作者: (美)David Mark (瑞 ...

  3. iOS开发- ios学习资源(持续更新)

    mark一些自己在学习过程中收集的资源.免得需要的时候没地方找. 持续更新.(最新更新时间: 2014.4.4) 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: St ...

  4. iOS开发- ios学习资源

    1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: Start Developing iOS Apps Today 构建Mac OS X程序:下面这篇文章介绍了Mac O ...

  5. [iOS开发]iOS中的Hash

    文章目录 前言 关联对象的底层原理 weak的实现原理 KVO的实现原理 iOS App签名的原理 对象引用计数存储的位置 Runloop与线程的存储关系 NSDictionary的原理 哈希表 哈希 ...

  6. iOS开发助手、ipa上传工具、苹果APP快速上架辅助工具Appuploader

    ipa上传助手Appuploader是一个iOS APP上架辅助助手,帮助开发者可以快速的申请iOS证书打包ipa文件上传到App Store审核. 非常方便的iOS上架助手,提升上架效率. 一.可以 ...

  7. iOS开发--iOS应用架构谈 view层的组织和调用方案

    前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...

  8. iOS开发--iOS通知中心扩展制作入门(iOS Extensions)

    个人笔记: 通知中心扩展,相当于一个特殊的独立的App存在.他和主App之间通讯可以通过OpenURL来实现.而在通知中心内部,像App一样,该咋样还是咋样(如异步网络请求, 自动布局等).  之所以 ...

  9. iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流

    在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,C ...

  10. iOS开发 iOS集成FFmpeg及视频格式转码

    点击下载 Demo 一.FFmpeg简介 FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方 ...

最新文章

  1. python 栈的压入弹出序列
  2. Oracle CRS stack is already configured and will be running under init(1M)
  3. 串的模式匹配(BF算法)
  4. 像狗皮膏药一样的图片拖拉操作
  5. flutter 自定义Tabbar高度和背景色
  6. uniapp 开发h5 优化加载速度
  7. Swift与Objective-C混编时,我们是如何将编译时间优化了35%?
  8. BZOJ5312 冒险 势能分析、线段树
  9. WAV音频文件格式介绍
  10. 2014小米校园招聘笔试(10.13北京)
  11. 【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)
  12. 大地坐标系转换火星坐标系
  13. 百度地图API秘钥问题
  14. PPT 图表不显示对应类型的数据解决办法
  15. 送给女朋友的圣诞节电子贺卡源代码,圣诞节快乐代码
  16. 查询各科成绩最高分、最低分和平均分
  17. 逻辑运算符符号化命题——数理逻辑
  18. Shell脚本之循环
  19. Web 页面如何添加水印?
  20. ANSI编码文件批量转换为UTF-8编码小tips

热门文章

  1. 选数(洛谷-P1036)
  2. 9 CO配置-控制-成本中心会计-在成本控制范围激活成本中心会计核算
  3. 四个变量的图表怎么做_PPT中的图表怎么做才高大上?4步帮你搞定!
  4. python中字符串大小写转换常用操作
  5. cycleGAN的改进文章(CyCADA + U-GAT-IT)
  6. python处理带有‘\x‘的字符串,拆分,解码,重组
  7. [有限元]桁架结构中杆单元的节点序号和单元序号的确定依据
  8. python简写匹配_Python简写
  9. 非插件实现回复可见效果
  10. lora信号测试小助手_LoRa是如何通过CAD来实现唤醒的