「OC」ViewController的生命周期

uniapp 开发小程序 使用 `uni.canvasToTempFilePath` 导出图片时遇到的 “fail fail canvas is empty“ 错误解决方法 问题的关键在于,在调用时需要正确的上下文对象。如果没有传入this(vue2)或instance(vue3),就会导致导出失败,提示错误。这也提醒我们,在使用类似这样的 API 时,要确保上下文传递正确,以便函数能够正常执行。希望这个排查过程和解决方案能帮助你解决类似的问题! 阅读详情

「OC」ViewController的生命周期

前言

之前学习了MVC的简单入门,我们知道了C指的就是ViewController,那我们就借此机会探究一下ViewController的生命周期相关内容。

基本概念

在iOS之中,我们两类ViewController

一类是用于显示内容的

比如:UIViewController、UITableViewController等,同时还可以自定义继承自UIViewController的ViewController

一类是viewcontroller的相关容器

UINavigationViewController和UITabBarController,UINavigationController是以栈的形式来存储和管理ViewController,一般后一个ViewController一般都会依赖前一个ViewController来进行推出(从相关方法之中的push和pop就可以看出)。UITabBarController是以可变数组的形式来管理ViewController,各个ViewController之间是并列的。

控制器的生命流程

请添加图片描述

生命周期函数

//系统的loadview完成后,执行viewDidLoad
- (void)viewDidLoad;
//这几个生命周期方法,必须熟悉
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
- (void)viewWillLayoutSubviews NS_AVAILABLE_IOS(5_0);
- (void)viewDidLayoutSubviews NS_AVAILABLE_IOS(5_0);
- (void)didReceiveMemoryWarning;

其实从这些方法的名字大致就能够猜到这些方法所起到的作用了

  1. loadView::创建一个view并且将这个view赋值给controller的view属性
  2. **viewDidLoad:**进行一些比如控件的初始化之类的操作,但是在这个控制器销毁之前只会调用一次该方法
  3. viewWillAppear::添加一些即将要现实出来的方法,由于可以重复调用,当我们在导航栏之中push出控制器的时候,一般都会将tabBar隐藏,在返回主界面的时候再将tabBar给显示出来,这个操作一般就在viewWillAppear之中使用
  4. viewWillLayoutSubviews::即将开始子视图位置布局
  5. viewDidLayoutSubviews::用于通知视图的位置布局已经完成
  6. viewDidAppear::视图已经展示在屏幕上,可以对视图做一些关于展示效果方面的修改。
  7. viewWillDisappear::视图即将消失
  8. viewDidDisappear::视图已经消失

周期函数的调用顺序

那当我们在控制器之中推出另一个控制器,具体的方法调用是什么情况呢?我们来探究一下

首先在控制器之中展示另一个控制器我们可以使用push方法和present方法,以下是两种不同方法的生命周期调用函数情况:

如果我们使用push/pop的方法,那么调用顺序如下:

push

在这里插入图片描述
pop:

请添加图片描述

如果我们使用present/dismiss则是如下情况:

present:

image-20240910195438037

dismiss:

image-20240910195656305

我们不难看出,如果使用push方法的话,前一个控制器会调用disappear系列的方法,那如果使用的是present的方法则对不会调用disappear系列的方法,但是两个方法在初次调用LayoutSubviews和loadview方法之后就不会再对其重新进行调用了。

总结

在iOS开发中,ViewController的生命周期函数扮演着至关重要的角色,控制着视图控制器的加载、显示和消失过程。通过深入理解这些生命周期函数,我们可以更好地管理和控制视图控制器的行为,在需要的地方添加相关逻辑进行操作。

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略 在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。 阅读详情

相关推荐

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

UIViewController的生命周期及iOS程序执行顺序

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1、 alloc                                   创建对象,分配空间 2、init (initWithNibName) 初始化对象,初始化数据 3、loadView                          从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图

huifeidexin_1的专栏 12万+

“挑战杯”大赛“揭榜挂帅”赛道-baseline解析

在这个脚本中,txt文件的保存路径为'yolov7/datasets/Fatigue_driving_detection/txt_labels/',而xml文件的路径为'./label_xml/'。标注图片后的产物是会给每一个图片对应生成一个xml格式的文件,但是如果要用yolo框架去训练模型,输入的数据必须是txt格式,因此这里有一步转换格式的过程。注意看:obs这里有三个文件夹,第一个是关键帧的文件夹A,第二个是标注时输出的位置为文件夹B,第三个是智能标注后和手动标注的合集文件夹C。

m0_62899814的博客 2322

iOS——ViewController的生命周期

ViewController的生命周期是指在应用程序运行过程中,ViewController实例从创建到销毁的整个过程。在这个过程中,ViewController会经历一系列的生命周期方法,这些方法可以帮助开发者管理ViewController及其相关的视图和逻辑。ViewController的生命周期是一个复杂的过程,开发者需要了解这个过程,才能正确地管理ViewController及其相关的视图和逻辑。

m0_73348697的博客 1840

PCB工程师必看:别再搞错1078玻纤布的Dk了,手把手教你算等效介电常数

本文为PCB工程师提供了1078玻纤布等效介电常数(Dk)的详细计算指南,帮助解决高速设计中的信号完整性问题。通过解析玻纤布结构、混合介质理论和实战计算方法,指导工程师准确设置EDA工具参数,避免常见的Dk计算误区,提升设计精度和仿真准确性。

weixin_42546392的博客 399

Avalonia使用CefNet 实现web-browsers(基于CentOS8 Arm64架构)

Avalonia使用CefNet 实现web-browsers(基于CentOS8 Arm64架构)

confused_kitten的博客 3803

iOS开发进阶(十):viewController 生命周期讲解

方法:销毁视图,释放资源。不要手动调用此方法,当引用计数值为0的时候,系统会自动调用此方法。可能会被调用多次(View可能会被多次加载),当view被添加到其他view中之前,会调用。当view从其他view中移除之前,调用。当view不再使用时,受到内存警告时,会将view释放并将其指向为。时,view已经生成了,时view还没有生成,分为A和B两个视图。

IT全栈 华强工作室 1721

从理论到代码:蒙特卡洛法在光学散射模拟中的应用全解析(Matlab 2014a版)

本文详细解析了蒙特卡洛法在光学散射模拟中的应用,从数学原理到Matlab 2014a实现。通过模拟光子随机游走过程,精确描述光在浑浊介质中的传输特性,提供完整的源码实现和性能优化技巧,适用于生物医学光学、大气遥感等领域。

rum55的博客 629

ios_oc 应用程序的生命周期

iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。iOS系统的资源是有限的,这样可以提高电池的使用和用户体验。 开发app,我们要遵循apple公司的一些指导原则,原则如下: 1、应用程序状态 状态如下: Not running 未运行 程序没启动 Inactive 未激活 ...

289

DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”

在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。

邓邓子的博客 1690

Unreal Engine Profiler:动画系统性能分析教程_2024-07-23_03-05-38.Tex

Unreal Engine Profiler 是一个内置的性能分析工具,它可以帮助开发者识别和解决游戏中的性能瓶颈。Profiler 提供了详细的性能数据,包括 CPU 使用率、GPU 负载、内存使用情况等,特别针对动画系统,可以查看动画蓝图的执行时间、骨骼动画的计算成本、以及动画混合和重定向的效率。通过这些数据,开发者可以定位到具体的问题,比如哪些动画状态消耗了过多的 CPU 时间,或者哪些动画资源导致了内存泄漏。

825

【iOS】viewController的生命周期

初始化UIViewController,执行关键数据初始化操作。不要在此操作view,view在loadView: 方法中才初始化。分为A和B两个视图。

m0_63852285的博客 3147

092、多sensor帧同步在环视系统中的实现——基于瑞芯微RK3588的PPS同步与曝光同步方案

摘要: 本文探讨了瑞芯微RK3588平台在360环视系统中实现多摄像头帧同步的技术方案。针对环视拼接常见的动态场景错位问题,提出了PPS同步与曝光同步相结合的解决方案。通过GPIO硬件触发实现四路摄像头同步曝光,配合I2C全局曝光控制,将时间误差控制在0.5ms内。文章详细解析了RK3588设备树配置、内核驱动实现中的关键细节,包括同步信号处理、寄存器原子写入等核心技术点,并分享了量产中遇到的温度漂移、信号完整性等实际问题及解决方法。最终通过硬件整形和电源优化,将同步抖动控制在±5μs以内,有效解决了动态拼

zzfmlxs的博客 34

ViewController 生命周期

ViewController 生命周期

ProgramNovice的博客 923

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【iOS】—— ViewController生命周期

首先来看下ViewController在运行过程中的函数介绍:过程图可看如下: 我们来看一个demo,设计思想为从第一个界面切换到第二个界面,再从第二个界面切换回第一个界面,全程当这些函数运行的时候打印出函数名:第一个界面: 第二个界面: 当app启动进入第一个界面: 此时输出结果: 此时输出结果: app返回第一个界面:

m0_62386635的博客 576

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【iOS】ViewController生命周期

了解ViewController生命周期之前,我们首先认识一下ViewController的结构 了解了的生命周期后,就可以在合适的时机(重写的方法里)根据需求自定义想要实现的交互事件、代码逻辑。

XY_Mckevince的博客 837

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IOS学习笔记37——ViewController生命周期详解

在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它。ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调。在IOS中,有两类ViewController,一类是显示内容的,比如UI

feelinghappy的专栏 299

【iOS开发】—— viewController的生命周期

首先先阐明ViewController的职责:对内管理与之关联的View,对外跟其他ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任。理解ViewController的LifeCycle(生命周期),能够有效地管理应用资源。 OC下的调用方法和调用顺序 调用顺序 方法 方法介绍 1 - (void)loadView {} loadView做了一些加载View.

weixin_50990189的博客 407

03 OC UiVIew 的生命周期

创建自定义的 TestView 继承 UIView // // TestView.h // SampleApple // // Created by liuan on 2020/7/20. // Copyright © 2020 liuan. All rights reserved. // #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface TestView : UIView @end NS_ASSUME_N

丿灬安之若死 430

通过ViewController的关键流程来理解流程建模

在最近解决某个问题的时候,发现在ViewDidDisappear中去获取self.navigationController为空。猛然间意识到,原来在VC的生命周期中存在一些细节问题需要注意。而且,最近一段时间,对基于流程(生命周期是特殊的流程)建模的编程思想也开始有些反思。所以就总结了一下VC生命周期的一些问题。 先说点比较抽象的东西,关于流程建模的。对于同一个对象而言,往往在不同的业务场景

Thinker361的专栏 634

【OC】如何加载一个storyboard 类型的View以及它的ViewController

如何使用 storyboard 和视图控制器来构建 MacOS应用程序的界面和交互逻辑,以及如何正确地管理视图控制器之间的关系和生命周期

三岁牧羊的博客 487

iOS ViewController生命周期

iOSViewController生命周期

Nick_since2016的博客 1199

iOS view和viewController的生命周期

一、ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任 二、ViewController的生命周期 View是指Controller的View。它作为Controler的属性,生命周期在Co

fuzheng的博客 635

ViewController介绍

ViewController                  ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如表视图控制器(UITableViewController)、导航控制器(UINaviga

ziyikongfu的专栏 757

OC 基础知识梳理

一、ViewController的生命周期 二、OC的关键字 三、计算机网络层级 四、两个子视图找到同一个VC 五、判断block的类型 liu

Coding_Physical的专栏 636

ViewController的关键流程

在最近解决某个问题的时候,发现在ViewDidDisappear中去获取self.navigationController为空。猛然间意识到,原来在VC的生命周期中存在一些细节问题需要注意。而且,最近一段时间,对基于流程(生命周期是特殊的流程)建模的编程思想也开始有些反思。所以就总结了一下VC生命周期的一些问题。 先说点比较抽象的东西,关于流程建模的。对于同一个对象而言,往往

苏小妖的博客 417
上一篇: 「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究
下一篇: 「OC」事件点击demo合集
小鹿撞出了脑震荡
博客等级 码龄3年 1107粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值