当前位置: 首页 > news >正文

山西什么时候全面解封手机端seo

山西什么时候全面解封,手机端seo,wordpress 中文博客主题,如何在一个地方建设网站UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的…UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的理解比较浅显仅仅只知道他是用来加载视图的后面在有关天气预报的内容中了解了有关视图控制器生命周期的内容。 UIViewController的一个结构 UIViewController这个视图控制器 UIViewController的函数的执行顺序 这里先给出一个图片来展示一下流程然后我们在通过讲解一下相关的内容这里我们尝试在打印所有的内容。 这里笔者想通过两个视图控制之间相互切换来实现一个展示每一个视图控制器生命周期的效果这里我们先讨论有关于loadView这个函数开始的一些执行过程。 这里我们先要重写有关ViewController的生命周期中所有函数让他先可以打印自己的函数名。 // // FirsttViewController.m // ViewController的生命周期 // // Created by nanxun on 2024/9/9. //#import FirsttViewController.h #import TestViewController.h interface FirsttViewController ()endimplementation FirsttViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor UIColor.whiteColor;UIView* myView [[UIView alloc] initWithFrame:CGRectMake(80, 80, 80, 80)];myView.backgroundColor UIColor.redColor;[self.view addSubview:myView];UIButton* btn [UIButton buttonWithType:UIButtonTypeCustom];btn.frame CGRectMake(200, 200, 50, 50);btn.backgroundColor UIColor.redColor;[self.view addSubview:btn];[btn addTarget:self action:selector(press) forControlEvents:UIControlEventTouchUpInside];NSLog(%s, __func__);// Do any additional setup after loading the view. } -(void)loadView {[super loadView];//注意这里重写子类方法的时候记得要先调用父类方法NSLog(%s, __func__); } -(void)press {TestViewController* vc [[TestViewController alloc] init];[self.navigationController pushViewController:vc animated:YES]; } -(void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];NSLog(%s, __func__); } -(void)viewDidAppear:(BOOL)animated {[super viewDidAppear:animated];NSLog(%s, __func__); } -(void)viewWillLayoutSubviews {[super viewWillLayoutSubviews];NSLog(%s, __func__); } -(void)viewDidLayoutSubviews {[super viewDidLayoutSubviews];NSLog(%s, __func__); } -(void)viewWillDisappear:(BOOL)animated {[super viewWillDisappear:animated];NSLog(%s, __func__); } -(void)viewDidDisappear:(BOOL)animated {[super viewDidDisappear:animated];NSLog(%s, __func__); } - (void)dealloc {NSLog(%s, __func__); } /* #pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {// Get the new view controller using [segue destinationViewController].// Pass the selected object to the new view controller. } */end 运行代码 这里我们通过打断点的方式给每一个ViewController的方法都打上断点然后我们先加载第一个视图控制器 这里可以看到我们的代码是这样一个执行流程先执行loadView这一步是将view载入到内存中然后我们在viewDidLoad这个方法中把相关的控件加载到我们的view上再执行ViewWillAppear这个方法后面会调用ViewWillLayoutSubview这个方法然后就会把视图布局好然后执行ViewDidLayoutSubview这个方法然后我们就会执行ViewDidAppear这个方法来完成我们的所有视图的加载。 这时候我们通过点击我们的按钮然后我们这里可以看到两个视图控制器从前一个视图控制器转移到后面的视图控制器的过程并不是前一个视图控制器直接执行viewWillDisAppear而是后一个视图控制器先执行viewDidLoad这个方法加载好控件之后前一个视图控制开始执行有关消失的方法后一个视图控制器开始执行有关视图出现的函数这样个流程才实现一个视图控制器的完整的生命周期下面我给出打印的内容。 后面的视图控制器出现在屏幕上和前一个视图控制器的view消失是一个交替的过程这里可以看到我们的第一个视图控制器并没有被释放没有执行有关视图控制器销毁的函数但是当我们从后面的一个视图控制器跳转到前一个视图控制器的时候后面的视图会执行一个dealloc的销毁函数这里指的是视图控制器的销毁。 这里笔者简单讲述分析一下每一个视图控制器调用的函数的相关作用引用自UIViewController的生命周期 1、initWithCoder:或initWithNibName:Bundle 首先从归档文件中加载UIViewController对象。即使是纯代码也会把nil作为参数传给后者。2、awakeFromNib 作为第一个方法的助手方法处理一些额外的设置3、loadView创建或加载一个view并把它赋值给UIViewController的view属性4、viewDidLoad 此时整个视图层次(view hierarchy)已经放到内存中可以移除一些视图修改约束加载数据等5、viewWillAppear 视图加载完成并即将显示在屏幕上。还没设置动画可以改变当前屏幕方向或状态栏的风格等6、viewWillLayoutSubviews即将开始子视图位置布局7、viewDidLayoutSubviews用于通知视图的位置布局已经完成8、viewDidAppear视图已经展示在屏幕上可以对视图做一些关于展示效果方面的修改。9、viewWillDisappear视图即将消失10、viewDidDisappear视图已经消失11、dealloc视图销毁的时候调用 笔者这里补充一下有关于前三个函数内容理解 这里可以看到我么的第一步创建方式如果是代码的方式他会执行initWithNibName:Bundle这个方法我们因为是通过纯代码方式创建的会将nil作为一个参数传到后者。我们的另一种则是通过故事板来创建。 当awakeFromNib方法被调用时所有视图的outlet和action已经连接但还没有被确定这个方法可以算作适合视图控制器的实例化配合一起使用的因为有些需要根据用户喜好来进行设置的内容无法存在storyBoard或xib中所以可以在awakeFromNib方法中被加载进来。 loadView这个方法中要正式加载View了。首先我们得知道控制器 view 是通过懒加载的方式进行加载的即用到的时候再加载。永远不要主动调用这个方法。当我们用到控制器 view 时就会调用控制器 view 的 get 方法在 get 方法内部首先判断 view 是否已经创建如果已存在则直接返回存在的 view如果不存在则调用控制器的 loadView 方法在控制器没有被销毁的情况下loadView 也可能会被执行多次。 这里提到了如果不存在view的话他会执行多次loadView这里可能会出现一个死循环也就是说我们在重写的loadView方法中没有创建view这里就会出现一个死循环的问题对于是否要调用super loadView这个语句的话并把子类的 view 赋给 view 属性 (property) (你 create 的 view 必须是唯一的实例并且不被其他任何 controller 共享)。 **如果你要进行进一步初始化你的 views你应该在 viewDidLoad 函数中去做。**在实际上我们如果想重写这个方法的时候也是要设置一个不同的子类view而如果调用的是super loadView这个语句的话他只会返回一个空白的View在开发的角度来说没有什么意义笔者这里仅仅只是为了展示UIViewController的一个生命周期才调用上述的这个方法。 这里有图可以很好的展示相关的内容 viewWillAppear viewDidAppear viewWillAppear在系统载入视图的时候会调用这个方法我们可以在这个方法中对将要显示的视图再进一步的设置同时调用数据要更新的时候都在这个方法里面实现。viewDidAppear 在view被添加到视图层级中以及多视图上下级视图切换时调用这个方法在这里可以对正在显示的视图做进一步的设置。 视图层次(view hierachy)因为每个视图都有自己的子视图这个视图层次其实也可以理解为一颗树状的数据结构。而树的根节点也就是根视图(root view),在UIViewController中以view属性。它可以看做是其他所有子视图的容器也就是根节点。 多个视图控制器跳转时的生命周期 push 当我们点击 push 的时候首先会加载下一个界面然后才会调用界面的消失方法。 initViewController2loadViewViewController2viewDidLoadViewController2viewWillDisappearViewController1 将要消失viewWillAppearViewController2 将要出现viewWillLayoutSubviews ViewController2viewDidLayoutSubviews ViewController2viewWillLayoutSubviews:ViewController1viewDidLayoutSubviews:ViewController1viewDidDisappear:ViewController1 完全消失viewDidAppear:ViewController2 完全出现 上面的图片也展示出了这个过程。 push会调用我们的viewDidDisappear方法 present 但是present方法和push调用的视图控制器的流程是不一样的 这里发现我们的present方法并不会让我们的前一个视图控制器调用viewWillAppear和viewDidAppear这两个方法同时也不会调用有关于viewDidDisappear和viewWillDisAppear 小结 笔者对于UIViewController的生命周期有了一点简单的认识后面会讲一下这里push和present两个方法具体区别。 参考博客 UIViewController的生命周期
http://www.dnsts.com.cn/news/26259.html

相关文章:

  • 惠州专业网站制作公司网络推销
  • 医疗器械网站制作凡科网首页
  • 网站seo分析html怎么做游戏
  • jsp开发网站开发源码个人网站如何进行网络推广
  • 给企业做网站app平台制作开发
  • 网站数据怎么更新流量网站
  • 中国建设银行湖南分行官网站开发软件的成本预算
  • 网站开发的前端到底是什么门户网站建设有哪些界面设计风格
  • 黄埔网站推广网址英文
  • 订单网站怎么做西安企业名录黄页
  • c 怎么做网站网站备案通过后
  • 南京维露斯网站建设建设网站的意义 作用是什么意思
  • 第一ppt网站官网公司装修预算表
  • vipsystem for wordpresswordpress菜单优化插件
  • 做网站要sql 数据库名字账号密码昆明学校网站建设
  • 厦门网站设计石家庄住房和城乡建设局官网
  • 如何做适合网站大小的图片it服务
  • 一站式媒体发稿平台电脑制作h5最常用软件
  • 五金加工东莞网站建设高端定制站开发
  • 网站编辑做啥都淮南发布网
  • 素马杭州网站设计介绍seo排名优化seo
  • 东莞住建局官网网站旅游电子商务网站建设规划
  • php网站带数据库网站源码下载了没有管理后台
  • 平面设计培训班哪里有宁波网站关键词优化排名
  • 企业网站建设网站专业服务建设银行的官方网站积分商场
  • 做网站用不用云服务器胶南建网站
  • 营销型网站设计公司如何优化搜索引擎关键词
  • 成都网站工作室用php做的网站必备那些文件
  • 临沂网站建设推广建设网站托管费用
  • 济南中建设计院网站视频网站怎么做统计