| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> OOM问题原理解析(三),太现实了 -> 正文阅读 |
|
[移动开发]OOM问题原理解析(三),太现实了 |
如果不可以后台运行或挂起会经历 Active–>Inactive–>Background–>Suspended–>Not Running Background–>Suspended 调用 applicationDidEnterBackground: 发送:UIApplicationDidEnterBackgroundNotification Suspended–>Not Running 调用 applicationWillTerminate: 发送:UIApplicationWillTerminateNotification
Suspended–>Background–>Inactive–>Active Background–>Inactive 调用 applicationWillEnterForeground: 发送:UIApplicationWillEnterForegroundNotification Inactive–>Active 调用 applicationDidBecomeActive: 发送:UIApplicationDidBecomeActiveNotification
Background–>Suspended–>Not running 这种情况不会调用任何方法,也不会发送任何通知。
//类的初始化方法,并不是每次创建对象都调用,只有这个类第一次创建对象才会调用,做一些类的准备工 作,再次创建这个类的对象。initialize方法将不会被调用,对于这个类的子类,如果实现了initialize 方法,在这个子类第一次创建对象是会调用自己的initialization方法,没有实现者由调用父类实现方 法;可以用以实现相关全局变量
//对象初始化方法init方法和initCoder方法相似,只是被调用的环境不一样,如果用代码进行初始化,会 调用init,从nib文件或者归档进行初始化,会调用initCoder。
//从归档初始化
//加载视图:是开始加载视图的起始方法,除非手动调用,否则在viewcontroller的生命周期中没特殊情况 只被调用一次;ViewController的view是使用了lazyInit方式创建,就是说你调用的view属性的 getter:[self view]。在getter里会先判断view是否创建,如果没有创建,那么会调用loadView来 创建view。loadView和viewDidLoad的一个区别就是:loadView时还没有view。而viewDidLoad时 view以及创建好了。 -(void)loadView; //将要加载视图:,类中成员对象和变量的初始化我们都会放在这个方法中,在类创建后,无论视图的展现或消失,这个方法也是只会在将要布局时调用一次。
//将要展示 -(void)viewWillAppear:(BOOL)animated; //将要布局子视图,在viewWillAppear后调用,将要对子视图进行布局。 -(void)viewWillLayoutSubviews; //已经布局子视图 -(void)viewDidLayoutSubviews; //已经展示 -(void)viewDidAppear:(BOOL)animated; //将要消失 -(void)viewWillDisappear:(BOOL)animated; //已经消失 -(void)viewDidDisappear:(BOOL)animated; //内存警告
//被释放 -(void)dealloc; 从nib文件加载的controller,只要不释放,在每次viewWillAppare时都会调用layoutSubviews方 法,有时甚至会在viewDidAppare后在调用一次layoutSubviews,而重点是从代码加载的则只会在开始调 用一次,之后都不会,所以注意,在layoutSubviews中写相关的布局代码十分危险。
@property(nullable,nonatomic,weak,readonly) UIViewController *parentViewController;
NSLog(@“self.parentViewController > %@ ===== %@”,[self.parentViewController.parentViewController class],self.parentViewController.parentViewController);
self.parentViewController > YLUITabBarViewController ===== <YLUITabBarViewController: 0x10201ee00>
//其所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面试真题解析 各个模块学习视频:如数据结构与算法 **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )** 只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:21:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |