IOS之【ios程序的生命周期】

原创 2013年12月02日 17:36:10

OneAppDelegate.m文件


#import “OneAppDelegate.h"

#import “OneViewController.h"

@implementation OneAppDelegate


- (void)dealloc

{

    [_windowrelease];

    [_viewControllerrelease];

    [superdealloc];

}


#pragma mark 在应用程序启动完毕的时候调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    //在这里隐藏状态栏,会让程序全屏显示

    // application.statusBarHidden = YES;

    

    // 初始化一个窗口

    self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];

    

    //初始化一个控制器

    // OneViewController.xib

    // bundle:可以理解为是文件夹,传入nil代表着项目文件夹

    // 如果nibNamenil,默认会去加载与控制器同名的xib文件

    // self.viewController = [[[OneViewController alloc] initWithNibName:@“OneViewController123" bundle:nil] autorelease];

    

    //调用init方法创建控制器的时候,它会默认加载与控制器同名的xib文件

    //如果找不到对应的xib文件,就会默认创建一个空的UIView,默认背景颜色是黑色

    //实际上,创建好控制器之后,并不会去马上初始化内部的view

    //因为控制器内部的view是延迟加载的,用到时再加载

    self.viewController = [[[OneViewControlleralloc] init] autorelease];

    

    //只要你访问了控制器的view,才会开始创建它内部的view

    //所以下面这句代码会导致初始化控制器的view,而且创建完毕后会调用控制器的viewDidLoad方法

    //UIView *view =  self.viewController.view;

    

    //设置窗口的根控制器

    self.window.rootViewController =self.viewController;

    //最好设置窗口的根控制器,不要直接添加控制器的view到窗口中

    //因为控制器还要接收一些窗口传递过来的系统事件,比如屏幕旋转

    // [self.window addSubview:self.viewController.view];

    

    // window显示出来,并且成为主窗口

    // 窗口显示出来后就会将根控制器的ViewUIWindow

    [self.windowmakeKeyAndVisible];

    return YES;

}




OneViewController.m文件


#import “OneViewController.h"


@interface OneViewController ()


@end


@implementation OneViewController


- (void)click {

    UIApplication *app = [UIApplicationsharedApplication];

    //设置应用程序图标上的红色数字

    app.applicationIconBadgeNumber =5;

    

    // 隐藏状态栏

    // app.statusBarHidden = YES;

    

    // 显示联网状态

    //如果已经显示,就隐藏;如果已经隐藏,就显示

    //这里只是显示一个状态而已,并没有表示我们的程序真的在联网

    app.networkActivityIndicatorVisible = !app.isNetworkActivityIndicatorVisible;

}


#pragma mark 这个方法是用来加载内部的view

// 父类的loadView内部是这样实现的:如果有跟控制器相关联的xib文件,就会通过xib文件创建内部的view,如果没有,就会创建一个空白的view(默认背景颜色是黑色)

// 苹果设计这个方法的目的就是给我们自定义控制器内部的view

// 如果我们需要自定义控制器的view,就不需要调用父类的loadView方法

- (void)loadView {

    // [super loadView];

    

    // iPhone坐标系是320 x 480(点坐标系)

    

    // 获取屏幕的尺寸

    CGRect bounds = [UIScreenmainScreen].bounds;

    // 屏幕的宽度

   CGFloat width = bounds.size.width;

    // 屏幕的高度

   CGFloat height = bounds.size.height;

    // CGRect frame = CGRectMake(0, 20, width, height - 20);

    

    // applicationFrame就是控制器内部view默认的frame

    // {x=0, y=20, width=320, height=460}

    CGRect frame = [UIScreenmainScreen].applicationFrame;

    NSLog(@"%@",NSStringFromCGRect(frame));

    

    // 通过代码初始化我们的view

    self.view = [[[UIViewalloc] initWithFrame:frame]autorelease];

    

    // 设置view的背景颜色为红色

    self.view.backgroundColor = [UIColorredColor];

}


#pragma mark 当内部的view加载完毕之后就会调用

// 一般会在这里添加一些子视图、渲染数据

// 无论是通过xib还是代码创建view,总之view创建完毕后就会调用这个方法

- (void)viewDidLoad

{

    [superviewDidLoad];

    

NSLog(@"viewDidLoadview被加载完毕");

}


#pragma mark 当内部的view因为内存警告而被系统自动回收的时候调用

- (void)viewDidUnload {

    [superviewDidUnload];

}


#pragma mark 当内部的view被添加到视图层次结构(也就是被添加到窗口中时)中就会调用

// 如果是重写生命周期方法,一定要调用回父类的方法

- (void)viewDidAppear:(BOOL)animated {

    [superviewDidAppear:animated];

    NSLog(@"viewDidAppear,控制器的view被添加到屏幕");

}


#pragma mark 当内部的view从视图层次结构(也就是从窗口中移除时)中移除就会调用

- (void)viewDidDisappear:(BOOL)animated {

    [superviewDidDisappear:animated];

}


#pragma mark 当内部的view即将被添加到屏幕的时候调用

- (void)viewWillAppear:(BOOL)animated {

    [superviewWillAppear:animated];

    NSLog(@"viewWillAppear,view即将被添加到窗口中");

}


#pragma mark 当内部的view即将从屏幕中移除的时候调用

- (void)viewWillDisappear:(BOOL)animated {

    [superviewWillDisappear:animated];

}


#pragma mark 接收到内存警告

- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    //一般会在这里回收内存

}


@end


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

相关文章推荐

delphi IOS lifecycle 生命周期 后台

  • 2016年01月08日 13:44
  • 6KB
  • 下载

iOS生命周期

  • 2016年04月22日 10:25
  • 17KB
  • 下载

iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受...

IOS,生命周期

  • 2015年06月02日 21:13
  • 430B
  • 下载

iOS 生命周期

  • 2015年11月16日 20:49
  • 1.02MB
  • 下载

oc UI UIViewController的生命周期及iOS程序执行顺序

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1、 alloc                                   创建对象,分配空间 2、init (initW...

IOS程序生命周期

App程序的本质是在IOS系统与你自定义的代码间架起了一个桥梁,使你的App程序可以调用系统的各种功能,并通过你自定义的代码进行界面的现实,反馈。适当了解些App的基本构成架构,还有比较有意义的。...

ios:应用程序生命周期

一、iOS应用程序状态机一共有五种状态: 1. Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。 2. Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正...

iOS-应用程序生命周期

开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity、Service。今天我们接触一下iO...

ios程序入口...生命周期

#import #import "YYAppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS之【ios程序的生命周期】
举报原因:
原因补充:

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