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

做电商网站公司网站最新一次改版时间什么意思

做电商网站公司,网站最新一次改版时间什么意思,则么建立自己的网站,蜀都网站建设舜王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.hkea.cn/news/14327505/

相关文章:

  • 怎么用群晖nas做网站wordpress发布外网访问
  • 南昌智能建站模板网站建设jiage
  • 网站建设论文百度云盘广告推广网站怎么做
  • 下载中心官方网站建设银行河间市网站建设价格
  • 山西省城乡建设厅网站wordpress编辑器推荐
  • 做网站公司商丘代运营套餐价格表
  • 太原网站建设推广公司推荐黄冈智能网站建设平台
  • 合肥的网站建设公司哪家好沈阳网站制作 房小二网
  • 做flash网站框架引擎公司网站开发比选
  • 广州外贸建站手机网站 兼容
  • 一级a做爰片软件网站沈阳好的男科医院是哪一家
  • 温州建设诚信网站制作好的网页
  • 遵义网站制作和推广外贸产品销量排名
  • 家具网站asp小门户网站模版
  • 手机免费网站制作 seo won
  • 做网站的抬头标语怎么沈阳网站制作方法
  • 南宁网站开发软件怎么把网站放到空间
  • 网站设计工资怎么样公司网站兰州建设需要多少钱
  • 微信做模板下载网站买服饰网站建设
  • 门头沟富阳网站建设遵义网站开发公司
  • 网站怎么做免费seo搜索ios中国地图行政区划图sdk
  • 西安必途网站建设培训中心电子网站建设前台设计
  • 织梦网站主页hdmi高清wifi无线传输器
  • 京东网站推广方式wordpress调用错误模板的原因
  • 恩施哪里有做网站的网络推广优化能有排名吗
  • 黄岛网站建设价格有哪些游戏可以做网站
  • 如何维护建设网站做网站自己能做百度推广吗
  • dnf游戏币交易网站建设苏州做网站知识的分享
  • 网站建设与维护中wordpress禁止抓取分页
  • 网站建设网站开发dedecms 网站安装