Iphone开发(二)从helloWorld看app应用的运行轨迹和生命周期

原创 2012年03月25日 19:55:49

holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7392626


又要helloWorld了,每一个编程语言都逃不了这个宿命,今天我们通过helloworld来简单看一下iphone应用的生命周期和运行轨迹。

首先创建一个target:


建好之后我们会发现生成


好了,下面我们来对照生命周期图来研究这个项目:


首先,main方法是程序的入口,我们在main.m中会看到这样的代码:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        //NSStringFromClass 其实只是得到AppDelegate类名。
    }
}

在main中执行一个方法UIApplicationMain,该方法返回一个UIApplication对象表示我们的这个应用,第四个参数是一个字符串,提示我们去该字符串表示的类中寻找下一步的线索:application:DidFinishLaunchingWithOptions。我们发现该类名为AppDelegate,现在我们找到该类发现里面是如下内容:

#import "AppDelegate.h"

#import "ViewController.h"

@implementation AppDelegate

@synthesize window = _window;
@synthesize viewController = _viewController;

- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];//1
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];//2
    self.window.rootViewController = self.viewController;//3
    [self.window makeKeyAndVisible];//4
    return YES;
}



@end

这都是自动生成的,其余一些等待我们补充的空方法我们今天不讨论被我删掉,我们主要来看application:didFinishLaunchingWithOptions方法,两个参数我们暂且不管,看里面内容:

代码1表示创建一个窗口,该窗口在初始化时以整个屏幕边界作为范围。

代码2表示初始化ViewController对象,并将xib文件加载到ViewController里面,xib文件是利用interfaceBuilder构建的界面文件,系统自动生成,这里我们没有对其进行操作,是空的。

代码3表示将当前的视频控制器赋给window的根视图控制器,注意,window就像是一个画板,而我们直接看到的view是类似于贴纸一样的存在。

代码4表示显示当前window

好了,就这样一个程序就出来了,简单的甚至我们没有进行任何操作,但是,因为xib文件我们也没有操作,仍保持一种初始状态,所以如果这时候如果运行程序的话,我们看到的模拟器也会是这样一种状态:

现在,我们要添加helloworld了,一种方法是直接操作xib文件,添加一个label或者textView,如图直接在右下角的控件栏里面拖拽一个label到模拟视图上,然后双击编辑内容:


见证奇迹的时刻到了:


还有一种方法是不操作xib文件,直接在代码中实现,这时我们就需要编辑viewController类了,先将xib中的label拖出来恢复到未编辑状态,这时打开viewController类对viewDidLoad方法进行以下操作:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UILabel *laber = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    laber.text=@"helloworld";
    [self.view addSubview:laber];
    
}

这里注意,看方法名我们就会发现,这时的view是已经加载过的,那么我们的操作算什么呢,因为我们对xib文件并没有操作,所以已加载的view仍是一个空的,就像画框上的一张白纸,然后我们自定义一个label,将其作为subview再贴到这张白纸上。CGRectMake方法是创建一个范围,作为label的大小。效果如下:


我们还可以不把自定义的label作为当前view的subview,这时我们就不用addSubview方法,直接view=label即可,这时我们也不需要初始化时给一个Rect作为大小了,直接init就可以,这样的话整个界面就会是白底黑字的helloWorld。如下:


好了,各种各样的helloWorld都出来了,如果我们退出,程序会进入

- (void)applicationWillTerminate:(UIApplication *)application;

该方法也在Delegate类中,具体情况在每个方法里面怎样操作,我们先不讨论,通过今天的内容我们可以发现app中的应用真是典型的mvc模式啊,好了,今天通过helloWorld介绍了简单的生命周期和一个view的显示,下次我们介绍响应控制。


关键字:Iphone开发,Iphone 基础  入门 ,helloworld, 生命周期 ,subview ,view . viewController 





版权声明:本文为博主原创文章,未经博主允许不得转载。

Iphone开发(二)从helloWorld看app应用的运行轨迹和生命周期

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/deta...
  • ccccdddxxx
  • ccccdddxxx
  • 2014年02月12日 16:43
  • 680

移动开发的软件开发生命周期介绍(一)

Introduction to the Mobile Software Development Lifecycle --移动开发的软件开发生命周期介绍   凡例:标题翻译不另起行,以“--”起头,段落...
  • jhycjhyc
  • jhycjhyc
  • 2015年09月13日 22:12
  • 1305

Android应用程序的生命周期

描述:程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android从启动到停止的全过程。==程序的生命周期是由Android系统进行调度和控制的。 ① 程序生命周期 ...
  • G1036583997
  • G1036583997
  • 2014年03月07日 14:48
  • 8098

用Lua开发iphone程序

这两年来随着iphone,ipad在全球的热卖,用于开发ios程序的object-c语言也在编程语言榜上逐节攀升。不过用Object-C开发iphone程序还是不算方便,毕竟它只是一个面向对象的C,并...
  • smking
  • smking
  • 2013年03月17日 12:56
  • 6718

iOS 如何让一个程序在后台运行不被挂起,不死掉

iOS 如何让一个程序在后台运行不被挂起,不死掉前言:这是本人的第一篇博客,本来对这种写博客这种东西无感,但是发现有些东西如果不晒在网上,会让很多人费很多的时间去找一种问题的解决方法,于是我决定不做一...
  • u010818357
  • u010818357
  • 2016年04月22日 16:05
  • 13177

从HelloWorld看iphone程序的生命周期

做iphone开发首先第一件就是得知道iphone程序的生命周期,说白点就是当点击程序图标启动程序开始到退出程序整个使用运行过程中底下的代码都发生了什么,只有理解了这个才能游刃有余的掌握Iphone程...
  • zhenxi_20
  • zhenxi_20
  • 2014年03月21日 17:09
  • 318

Android应用程序的生命周期

大家都知道,Android可以同时运行多个应用并且支持互相之间的切换,这是因为Android是基于Linux的多用户、多任务的操作系统,Android应用的启动与执行同样也是基于Linux进程的。Li...
  • u014738140
  • u014738140
  • 2016年01月22日 13:33
  • 1347

Android开发环境配置及运行第一个程序Helloworld

这篇博文是为了帮助那些想学安卓开发的新手搭建好安卓开发环境,好,直接进入正题吧一、jdk环境配置(如果已经配置了就跳过这一步) 官网JDK下载链接: http://www.oracle.com/t...
  • qq_14815049
  • qq_14815049
  • 2015年09月04日 17:29
  • 1678

【IOS 开发学习总结-OC-60】ipad应用开发的一些知识

【IOS 开发学习总结-OC-60】ipad应用开发的一些知识ipad与iPhone上 管理有层次的工作流的不同iPhone上:通过NavigationController,用户可以从上一层界面A到下...
  • senwin2009
  • senwin2009
  • 2015年10月20日 12:13
  • 1290

揭秘Android App的工作原理-乐居猫学Android开发

Android系统是基于liunx内核的,但是与传统的基于liunx的pc系统不同,用户对Android app没有绝对的掌控权。pc系统中,在应用程序的系统菜单上选择“退出”或者“关闭”之类的选项会...
  • xingshikk
  • xingshikk
  • 2014年12月24日 18:25
  • 11943
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Iphone开发(二)从helloWorld看app应用的运行轨迹和生命周期
举报原因:
原因补充:

(最多只允许输入30个字)