记一例UIView突然不显示的排查过程
一、现象
今日在开发中遇到一个诡异问题,一个自定义的AlertView在显示之后瞬间在屏幕上消失,但是其对象在内存中依然存在
二、排查
通过lldb命令查询到view.superview.superview不存在为nil,才明白这个view的父view的父view被释放掉了,释放过程中该view自动从屏幕中移除导致。
该问题排查花费一个多小时。
三、总结UIView不显示的思路
- 判断这个view的大小是否为CGRectZero,这个view的位置是否超出父view。autolayout布局错误等
- 判断这个view的透明度信息是否为0,这个view的hidden是否为yes。
- 如果上面的信息正常,依次递归父view的上述信息是否正常。
- 查看界面是否未刷新,是否在子线程刷新了界面
如果发现异常,但是未能定位到view被隐藏的调用逻辑
1)在常规的隐藏,hidden,alpha处下断点
2)在removeFromSuperview处下断点
3)针对异常的对象下内存访问断点
4)针对异常的view,将其继承自定义view,重载特殊方法,在该方法中下断点
@implementation DebugView - (void)didMoveToWindow
{
if(self.window == nil)
{
// NSLog(@"visiable");
}
else
{
// NSLog(@"invisiable");
}
} - (void)didMoveToSuperview
{
if(self.superview == nil)
{
// NSLog(@"visiable");
}
else
{
// NSLog(@"invisiable");
}
} @end
记一例UIView突然不显示的排查过程的更多相关文章
- 解Bug之路-记一次中间件导致的慢SQL排查过程
解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章 ...
- UIView显示原理和过程
一.UIView显示原理 一个控件,UIView之所以可以显示,是因为内部在UIView的内部有一个layer属性作为根图层,根图层上可以放其他子图层,在UIView中所有能够看到的内 ...
- 解Bug之路-记一次存储故障的排查过程
解Bug之路-记一次存储故障的排查过程 高可用真是一丝细节都不得马虎.平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug.偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题, ...
- 如何处理UIVIew addsubview 不显示subview
老代码: addsubview不显示uilabel -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSIn ...
- C++ opencv高速样例学习——读图显示
1.关键函数 1. 读入图片 imread(图片或位置,显示格式)默觉得:IMREAD_COLOR 显示格式: IMREAD_UNCHANGED =-1 // 8bit, color or no ...
- MySQL执行计划显示与执行过程不符合一例
一 建表和现象的过程如下 CREATE TABLE t1 (id1 INT, a1 INT, b1 INT, PRIMARY KEY(id1));CREATE TABLE t3 (id3 INT UN ...
- 批量执行用例,且结果显示在html中,python控制台也会显示运行过程
下载HTMLTestRunner.py放到python安装目录的Lib下: 如下以登录为例,创建不同的.py文件, ========================================== ...
- C++入门经典-例8.3-子类显示调用父类构造函数
1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用. 无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数.若想使用父类带参数的构造函数,则需 ...
- 记一次免费让网站启用HTTPS的过程
写在前面 个人网站运行将近2个月了,期间根据酷壳的一篇教程如何免费的让网站启用HTTPS做了一次,中间遇到问题就放下了.昨天孙三苗问我网站地址说要添加友链,出于好奇想看他网站长什么样,顺道也加一下友链 ...
- 数据库实战案例—————记一次TempDB暴增的问题排查
前言 很多时候数据库的TempDB.日志等文件的暴增可能导致磁盘空间被占满,如果日常配置不到位,往往会导致数据库故障,业务被迫中断. 这种文件暴增很难排查,经验不足的一些运维人员可能更是无法排查具体原 ...
随机推荐
- 润乾报表与 ActiveReport JS 功能对比
简介 润乾报表是用于报表制作的大型企业级报表软件,核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的多源关联分片.不规则分组.自由格间运算.行列对称等技术,使得复杂报表的设计简单化,以往难以 ...
- deepspeed 训练多机多卡报错 ncclSystemError Last error
最近在搞分布式训练大模型,踩了两个晚上的坑今天终于爬出来了 我们使用 2台 8*H100 遇到过 错误1 10.255.19.85: ncclSystemError: System call (e.g ...
- 如何基于Django中的WebSockets和异步视图来实现实时通信功能
本文分享自华为云社区<结合Django中的WebSockets和异步视图实现实时通信功能的完整指南>,作者: 柠檬味拥抱. 在现代Web应用程序中,实时通信已经成为了必不可少的功能之一.无 ...
- 力扣1113(MySQL)-报告的记录(简单)
题目: 动作表:Actions 此表没有主键,所以可能会有重复的行. action 字段是 ENUM 类型的,包含:('view', 'like', 'reaction', 'comment', 'r ...
- HarmonyOS NEXT应用开发之Axios获取解析网络数据
介绍 本示例介绍使用第三方库的Axios获取GBK格式的网络数据时,通过util实现GBK转换UTF-8格式.该场景多用于需要转换编码格式的应用. 效果图预览 使用说明 直接进入页面就可获取GBK格式 ...
- 阿里云 EMR Delta Lake 在流利说数据接入中的架构和实践
简介: 为了消灭数据孤岛,企业往往会把各个组织的数据都接入到数据湖以提供统一的查询或分析.本文将介绍流利说当前数据接入的整个过程,期间遇到的挑战,以及delta在数据接入中产生的价值. 背景 流利说目 ...
- 基于 Serverless 打造如 Windows 体验的个人专属家庭网盘
简介:虽然现在市面上有些网盘产品, 如果免费试用,或多或少都存在一些问题, 可以参考文章<2020 国内还能用的网盘推荐>.本文旨在使用较低成本打造一个 "个人专享的.无任何限 ...
- 喜马拉雅 Apache RocketMQ 消息治理实践
简介:本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑. 作者:曹融,来自喜马拉雅,从事微服务和消息相关中间件开发. 本文通过喜马拉雅 ...
- [FAQ] JS 时间戳格式化为 date
拷贝使用,不用引入第三方库 function formatDate (date = 0, fmt = 'yyyy-MM-dd hh:mm:ss') { date = new Date(+date) i ...
- WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常
准确来说,这个不算是 WPF 的问题,而是系统等的问题.在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker 类里面抛出 Sys ...