OOM问题原理解析(三),太现实了

如果不可以后台运行或挂起会经历

Active–>Inactive–>Background–>Suspended–>Not Running

Background–>Suspended

调用 applicationDidEnterBackground: 发送:UIApplicationDidEnterBackgroundNotification

Suspended–>Not Running

调用 applicationWillTerminate: 发送:UIApplicationWillTerminateNotification




1.  挂起后,重新运行



Suspended–>Background–>Inactive–>Active

Background–>Inactive

调用 applicationWillEnterForeground: 发送:UIApplicationWillEnterForegroundNotification

Inactive–>Active

调用 applicationDidBecomeActive: 发送:UIApplicationDidBecomeActiveNotification




1.  内存不足,杀死程序



Background–>Suspended–>Not running

这种情况不会调用任何方法,也不会发送任何通知。




[](

)二、UIViewController的生命周期

==================================================================================



下面是UIViewController生命的相关方法(注意顺序)



//类的初始化方法,并不是每次创建对象都调用,只有这个类第一次创建对象才会调用,做一些类的准备工

作,再次创建这个类的对象。initialize方法将不会被调用,对于这个类的子类,如果实现了initialize

方法,在这个子类第一次创建对象是会调用自己的initialization方法,没有实现者由调用父类实现方

法;可以用以实现相关全局变量

  • (void)initialize;

//对象初始化方法init方法和initCoder方法相似,只是被调用的环境不一样,如果用代码进行初始化,会

调用init,从nib文件或者归档进行初始化,会调用initCoder。

  • (instancetype)init;

//从归档初始化

  • (instancetype)initWithCoder:(NSCoder *)coder;

//加载视图:是开始加载视图的起始方法,除非手动调用,否则在viewcontroller的生命周期中没特殊情况

只被调用一次;ViewController的view是使用了lazyInit方式创建,就是说你调用的view属性的

getter:[self view]。在getter里会先判断view是否创建,如果没有创建,那么会调用loadView来

创建view。loadView和viewDidLoad的一个区别就是:loadView时还没有view。而viewDidLoad时

view以及创建好了。

-(void)loadView;

//将要加载视图:,类中成员对象和变量的初始化我们都会放在这个方法中,在类创建后,无论视图的展现或消失,这个方法也是只会在将要布局时调用一次。

  • (void)viewDidLoad;

//将要展示

-(void)viewWillAppear:(BOOL)animated;

//将要布局子视图,在viewWillAppear后调用,将要对子视图进行布局。

-(void)viewWillLayoutSubviews;

//已经布局子视图

-(void)viewDidLayoutSubviews;

//已经展示

-(void)viewDidAppear:(BOOL)animated;

//将要消失

-(void)viewWillDisappear:(BOOL)animated;

//已经消失

-(void)viewDidDisappear:(BOOL)animated;

//内存警告

  • (void)didReceiveMemoryWarning;

//被释放

-(void)dealloc;

从nib文件加载的controller,只要不释放,在每次viewWillAppare时都会调用layoutSubviews方

法,有时甚至会在viewDidAppare后在调用一次layoutSubviews,而重点是从代码加载的则只会在开始调

用一次,之后都不会,所以注意,在layoutSubviews中写相关的布局代码十分危险。




[](

)UIViewController的新收获

===============================================================================



1.  parentViewController属性



@property(nullable,nonatomic,weak,readonly) UIViewController *parentViewController;




例如:我的项目结构为 tabbarController > navigationContriller > contorller



打印



NSLog(@“self.parentViewController > %@ ===== %@”,[self.parentViewController.parentViewController class],self.parentViewController.parentViewController);




输出



self.parentViewController > YLUITabBarViewController ===== <YLUITabBarViewController: 0x10201ee00>




无需调用window的rootcontroller来获取YLUITabBarViewController



2.模态跳转中Controller的从属



主要是两个参数,只要模态关系没有被释放,我们就可以利用这个两个参数进行对象获取,传值什么的根本不需要block或者delegate;



//其所present的contller,比如,A和B两个controller,A跳转到B,那么A的presentedViewController就是B

@property(nullable, nonatomic,readonly) UIViewController *presentedViewController NS_AVAILABLE_IOS(5_0);

//和上面的方法刚好相反,比如,A和B两个controller,A跳转到B,那么B的presentingViewController就是A

@property(nullable, nonatomic,readonly) UIViewController *presentingViewController NS_AVAILABLE_IOS(5_0);




传值可以简单使用



self.presentingViewController.view.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1];

小福利:

在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021大厂最新Android面试真题解析

Android大厂面试真题解析

各个模块学习视频:如数据结构与算法

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](

)**

算法与数据结构资料图

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
一线互联网架构师

这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!

本文已被腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录,自学资源及系列文章持续更新中…
习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!

本文已被腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录,自学资源及系列文章持续更新中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值