需求分析这是一个很简单的应用程序包含一个文本输入框一个文本显示框一个按钮。输入名字到文本输入框再点击按钮这时文本显示框的文字就会变成“你好名字!”。但是要注意如果用户输入为空要有警告提示用户重新输入如果用户输入文字太长超过16个字符要自动截断。产品设计根据项目需求画出相应的产品原型图初始状态初始时文本输入框为空但是显示水印提醒用户可以输入姓名。文本显示框文字为空。输入名字并点击按钮后输入名字并点击按钮后屏幕中间显示文字“您好名字!”。没有输入名字的警告提示如果没有输入名字点击按钮后弹出警告窗口提醒用户输入名字。系统分析这是一个非常简单的应用程序实现思路不不算复杂一个文本输入框用来输入文字需要限制最大字符长度为16个字符输入框没有内容时显示水印文字。UITextField控件正好可以满足需求。一个文本显示框用来显示最终生成的文字。使用UILabel控件即可满足需求。一个按钮点击后获取文本输入框文字内容生成“你好名字!”文字并显示在文本显示框中。如果点击时文本输入框文字为空弹出警告提示框。同时这个应用程序在开发过程中需要应用到iPhone开发中一些常用的设计模式委托(Delegate)模型 视图 控制器(MVC)目标 - 动作(Target-Action)委托(Delegate)委托模式是一个对象周期性地向被指定为其委托的另一个对象发送消息向其请求输入或者通知某件事情正在发生。该模式可替换类继承来对可复用对象的功能进行扩展。在本项目中应用程序对象会向其委托发送消息通知它主要的启动例程已经完成并且定制的配置可开始执行。为了建立并管理视图委托会创建一个控制器实例。另外当用户点击Return按键后文本字段也会通知它的委托即所创建的控制器对象委托方法通常会集中在一起形成一份协议。 一份协议基本上就是一个方法的列表。如果一个类遵循某个协议则它要保证实现协议所要求的方法有些方法可选择实现与否。委托协议规定了一个对象可以发送给委托的所有消息。例如常见的有UITextFieldDelegate, UIApplicationDelegate, UIScrollViewDelegate, UITableViewDelegate, UIWebViewDelegate。模型 视图 控制器(MVC)MVC模式将应用程序中的对象设定为三种角色模型角色Model、视图角色View和控制器角色Controller。模型对象(Model)表示数据。例如在iPhone自带的通讯录应用中联系人是模型对象在一个绘画应用中圆形、矩形是模型对象。本项目的应用程序用到的数据非常简单——字符串并且该字符串只有在按钮点击的方法中用到。其实换一种角度来说字符串也是一种最简单的模型对象在其他的应用程序中模型对象将会更加复杂并且模型对象在程序中无处不在可以在多个地方进行访问。视图对象(View)负责显示数据比如UILabel可以显示文本、UIImageView可以显示图片也会支持用户对数据的编辑操作例如UITextField可以支持用户输入。在我们接下来要创建的项目中需要一个主视图来包含其它几个视图——首先是一个文本输入框它用于捕获用户输入信息然后是一个文本显示框它用于显示文本而文本内容则是基于用户的输入另外还需要一个按键让用户可以点击它点击后通知文本字段更新。控制器对象(Controller)介于模型和视图之间。在我们接下来要创建的项目中当用户点击按钮后触发更新操作控制器对象将会从文本输入框中获取输入的文字内容并把文字存放在一个字符串中然后再把文本显示框的内容更新成格式化好的内容。结合MVC模式对于本项目的主要流程整个如图所示目标 - 动作(Target - Action)目标-动作机制允许一个控件对象(例如按键或滑动条) 向另外一个对象发送一条消息即动作以之作为对某个用户事件例如一个点击事件的响应。接收到消息的对象则可以对消息进行响应并针对业务要求做出处理。在本项目中当点击按钮时它会通知控制器去获取文本输入框内容并根据输入内容更新文本显示框。开发创建项目我们将开始使用Xcode来创建项目启动Xcode缺省情况下Xcode位于 /Developer/Applications 里面然后选择File New New Project这样就可以创建一个新的工程。应该可以看到一个新的窗口如下图所示选中 Window-Based Application 并点击 Next 按钮输入Product Name(项目名)SayHello在Company Identifier那可以输入公司名唯一标识。点击Next选择项目存储位置最后点击Create按钮。完成上述步骤后将看到如下的新项目窗口在进行下一步工作之前可以先编译运行一下程序这样就可以通过模拟器看到程序运行后的样子。在Xcode的菜单中选择 Product Run 或者点击左上角工具栏上的 Run 按钮iPhone模拟器应该会自动启动。当应用程序启动后可以看到一个白色屏幕。应用程序启动过程解析通过Xcode的模板创建项目时模板已经帮助设置好了应用程序基本程序环境它会帮助创建一个应用程序对象将应用程序和窗口连接起来建立一个运行环境。整个启动过程从UIApplicationMain函数开始如下图所示main.m文件中的main函数会调用UIApplicationMain函数:int retVal UIApplicationMain(argc, argv, nil, nil);该函数将会创建一个UIApplicaion类的实例。同时它会搜索应用程序的Info.plist属性列表文件。 Info.plist文件是一部字典它主要包含诸如应用程序名称、图标这样的信息它也包含应用程序对象应该加载的nib 文件虽然该文件的扩展名为“xib”但是我们习惯称之为“nib 文件”的名称。Nib文件主要有用户界面的信息。本项目的Info.plist文件具有下面的内容术语 虽然Interface Builder文档的扩展名可能是“.xib” 但历史上其扩展名是“.nib”“NextStep Interface Builder”的首字母缩写因此人们就俗称其为“Nib文件”。这表明应用程序启动时将会加载MainWindow nib文件。在Xcode中可以单击MainWindow.xib进行查看注意在Xcode4中已经不需要通过Interface Builder来打开nib文件可以直接在Xcode对nib文件进行查看和编辑MainWindow Nib文档包含4个对象Files Owner文件拥有者代理对象在这里MainWindow的拥有者对象时UIApplication实例First Responder第一响应者代理对象在本项目中没有使用到Say Hello App DelegateSayHelloAppDelegate的实例也就是应用程序的委托Window一个窗口对象。它默认是白色背景程序启动时看到的就是它应用程序对象在完成启动后会向委托发送applicationDidFinishLaunching:消息通知程序已经启动成功了这样我们可以在收到这个消息后根据需要进行一些操作。下图是一个简化的iPhone应用程序生命周期图简要展示了发生在应用程序启动到退出的过程。这样我们基本了解了如何创建一个项目以及一个应用程序的启动过程接下来我们需要创建一个视图控制器(UIViewController)实例用来实现项目功能。