程序,控制期和view的生命周期
来源:互联网 发布:seo专员做什么的 编辑:程序博客网 时间:2024/06/05 15:37
// 如果控制器是窗口的根控制器就可以不用设置尺寸
// self.view = [[UIView alloc] initWithFrame:CGRectZero];
self.view = [[UIView alloc] initWithFrame:CGRectZero];
###一.UIApplication的生命周期
(其实是UIapplication代理的方法)
“`objc
// 应用加载完毕
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
NSLog(@"应用加载完毕");return YES;
}
// 应用即将成为非活跃状态(即将失去焦点)
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"即将失去焦点");
}
// 应用进入后台
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@”应用进入后台”);
}
// 应用即将进入前台
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@”应用即将进入前台”);
}
// 应用成为活跃状态(应用获取焦点)
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@”应用获取焦点”);
}
// 应用即将结束
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@”应用即将结束”);
// 应用内,双击home键结束,会调用此方法// 应用外,双击home键结束,不会调用此方法
}
// 应用接收到内存警告
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
NSLog(@”应用接收到内存警告”);
}
###二.控制器的生命周期(按执行循序排序) ```objc //初始化对象,初始化数据的(一般很少在这个方法内执行操作) - (instancetype)init { if([super init]) { ... } return self; }// 系统从xib中加载,重写了loadView,系统不会加载storyboard和xib!!-(void)loadView{ [super loadView];}// 视图加载完成- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@,加载完成",[self class]);}// 即将显示-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"%@,即将显示",[self class]);}//即将布局view- (void)viewWillLayoutSubviews{ [super viewWillLayoutSubviews]; NSLog(@"viewWillLayoutSubviews");}//已经布局好view- (void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; NSLog(@"viewDidLayoutSubviews");}// 已经显示-(void)viewDidAppear:(BOOL)animated{/*系统在载入数据后,将会在屏幕上显示视图,这时候会先调用这个方法.通常我们会利用这个方法对即将显示的视图进一步的设置,例如:我们可以利用这个方法设置设备不同方向时该如何显示.另外,当app中有多个视图的时候,在视图切换的时候,并不会再次的调用ViewDidLoad方法,所以如果在调入视图时,需要对数据做更新,就只能在这个方法内实现了,这个方法非常有用!*/ [super viewDidAppear:animated]; NSLog(@"%@,已经显示",[self class]);}// 即将消失-(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; NSLog(@"%@,即将消失",[self class]);}// 已经消失-(void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; NSLog(@"%@,已经消失",[self class]);}//内存警告- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}//即将销毁view- (void)viewWillUnload{ [super viewWillUnload]; NSLog(@"viewWillUnload");}//已经销毁view- (void)viewDidUnload{/*这个方法作用:在内存足够的情况下,软件的视图通常会一直保存在内存中,但是如果内存不够的话,一些没有正在显示的ViewController将会收到内存不够的警告,然后就会释放自己拥有的视图,已达到释放内存的目的,但是系统只会释放内存,并不会释放对像的所有权,所以我们需要在这里将不需要在内存中保留的对象释放所有权,也就是讲其指针设置为nil,这个方法通常并不会在试图变换的时候被调用的,而只会在系统退出或者是收到内存警告的时候才会被调用的,但是由于我们需要保证收到内存警告的时候能够对其作出响应,所以我们手动自己去实现这个方法另外,即时设备上按了Home键之后,系统也不一定调用该方法,因为在iOS4之后,系统允许app在后台挂起,并将继续滞留在内存中,因此ViewController并不会调用这个方法释放内存*/ [super viewDidUnload]; NSLog(@"viewDidUnload");}// 控制器销毁,这里可以对之前创建的对象进行释放-(void)dealloc{ NSLog(@"%@,销毁",[self class]);} ``` ###三view的生命周期 (自定义或者重写继承自UIview的控制的时候调用的) ``` //通过代码创建控件的时候的会调用,//这里的获取frame值 是不准确的//创建子控件对象添加即可,在layoutSubviews中布局
“`objc
//调用init的方法的时候,init方法内部会自动调用initWithFrame:方法
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [self initWithFrame:frame])
{
}
return self;
}
//通过xib和SB加载的会调用
//在这里获取frame的值也是不准确的
//这里获取不到UIView中子控件(这里还没加载完成)
//创建
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder])
{
}
return self;
}
//通过xib\sb加载会调用
//这里获取的frame值还是假的
//创建子控件对象 ,添加即可 - 布局在layoutSubviews
- (void)awakeFromNib
{
}
//在这里可以绘制图层
- (void)drawRect:(CGRect)rect
{
}
//在这里布局子控间的
//第一次加载或者刷新的时候会调用
//子控件发生变化的时候(frame和子控件的个数变化),会调用
- (void)layoutSubviews
{
}
“`
- 程序,控制期和view的生命周期
- view和viewController的生命周期
- view和viewController的生命周期
- view和viewController的生命周期
- view和viewController的生命周期
- view和viewController的生命周期
- View和viewController的生命周期
- view和viewController的生命周期
- View和viewController的生命周期
- View和viewController的生命周期
- View和viewController的生命周期
- view和viewController的生命周期
- View和viewController的生命周期
- view和view controller的生命周期
- Go实现控制任程序的生命周期
- View的生命周期和Activity生命周期的执行顺序
- iOS view和viewController的生命周期
- iOS view和viewController的生命周期
- 浅拷贝和深拷贝
- 王爽《汇编语言》检测点1.1详解
- 属性系统
- Android自定义Layout实现QQ消息拖动效果
- 如何用MathType插入公式编号
- 程序,控制期和view的生命周期
- mac_ScreenSaver_第1个屏幕保护程序
- OSG+Duilib显示osg
- 文章标题
- 二叉树的后序非递归遍历
- java通过Solr的Suggest实现提示词
- C++ 之IO类库
- Win32 内存对齐
- hadoop 2.7.1命令示例