您的位置:首页 > 产品设计 > UI/UE

iphone开发之初识iphone应用程序

2012-04-18 20:52 274 查看
我们在学习一门开发语言时往往都是以Helloworld开始的,所以我就以Helloworld来开始我的iphone开发之旅并学习iphone应用程序的架构及生命周期。

打开xcode新建一个基于UIView的项目。项目名为Helloworld,打开ViewController.xib文件,我们需要一个Labe控件,按住鼠标突入一个Label,双击该Label,输入Helloworld。好了就这么简单,这时可以编译运行了,如果不出意外的话,将看到下面的结果。



很简单吧!这不是我们的目的,如果要开发出一款优秀的iphone应用,我们需要了解iphone应用程序架构和生命周期。

所有的iPhone应用程序都是基于UIKit框架构建而成的,因此,它们在本质上具有相同的核心架构。UIKit负责提供运行应用程序和协调用户输入及屏幕显示所需要的关键对象。应用程序之间不同的地方在于如何配置缺省对象,以及如何通过定制对象来添加用户界面和行为。

从应用程序启动到退出的过程中,UIKit框架负责管理大部分关键的基础设施。iPhone应用程序不断地从系统接收事件,而且必须响应那些事件。接收事件是
UIApplication
对象的工作,但是,响应事件则需要您的定制代码来处理。为了理解事件响应需要在哪里进行,我们有必要对iPhone应用程序的整个生命周期和事件周期有一些理解。本文的下面部分将描述这些周期,同时还对iPhone应用程序开发过程中使用的一些关键设计模式进行总结。


应用程序的生命周期

应用程序的生命周期是由发生在程序启动到终止期间的一序列事件构成的。在iPhone OS中,用户可以通过轻点Home屏幕上的图标来启动应用程序。在轻点图标之后的不久,系统就会显示一个过渡图形,然后调用相应的
main
函数来启动应用程序。从这个点之后,大量的初始化工作就会交给UIKit,由它装载应用程序的用户界面和准备事件循环。在事件循环过程中,UIKit会将事件分发给您的定制对象及响应应用程序发出的命令。当用户进行退出应用程序的操作时,UIKit会通知应用程序,并开始应用程序的终止过程。

图1-1显示了一个简化了的iPhone应用程序生命周期。这个框图展示了发生在应用程序启动到退出过程中的事件序列。在应用程序初始化和终止的时候,UIKit会向应用程序委托对象发送特定的消息,使其知道正在发生的事件。在事件循环中,UIKit将事件派发给应用程序的定制事件处理器。有关初始化和终止事件的如何处理的信息,将在随后的“初始化和终止”部分进行讨论;事件处理的过程则在“事件处理周期”部分介绍,在后面的章节也还有更为详细的讨论。

图1-1  应用程序的生命周期



注:以上内容来自苹果官方说明文档

通过上述说明我们对iphone应用程序的组成及生命周期有了一个大致的了解。下面我们来扩展一下我们的Helloworld。

拖入两个个Button控件,分别双击鼠标修改为Show和Clear。

打开ViewController.h文件,修改如下:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (nonatomic, retain) IBOutlet UITextView *text;

- (IBAction)showText:(id)sender;
- (IBAction)clearText:(id)sender;
@end


再打开ViewController.m文件修改如下:

//
//  ViewController.m
//  HelloWorld
//
//  Created by YQ-010 on 4/12/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

@synthesize text;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

- (IBAction)showText:(id)sender
{
NSString *hello = [[NSString alloc] initWithFormat:@"Hello,world!"];
self.text.text = hello;
[hello release];
}
- (IBAction)clearText:(id)sender
{
NSString *nullText = [[NSString alloc] initWithFormat:@""];
self.text.text = nullText;
[nullText release];
}
#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
self.text = nil;
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}

- (void) dealloc
{
[text release];
[super dealloc];
}
@end


我们为两个按钮分别说明了一个响应,当我们按下按钮时,就会执行我们设置的showText和clearText函数。不要忘了将按钮和我们的File's Owner建立连接。编译运行:

  

   


怎么样有了交互之后是不是不一样了,这时我们也许会对,按钮的事件处理有点疑惑,不用担心,我们下次就会学到。

就写这么多,有什么问题请留言,大家一起学习交流!

说明:转载请注明出处!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息