我的代码我的坑(八) —— iOS 13.1.2 Debug调试模式系统layoutSubviews中修改frame循环调用导致的崩溃(一)

版本记录

版本号 时间
V1.0 2019.11.16 星期六

前言

做了好几个APP,碰到了大大小小的很多坑,以前碰到坑,解决了就结束了,这里想把自己碰到的坑记录下来,一来给自己备查二来希望可以帮助到大家。感兴趣的可以关注下,也欢迎大家补充留言,感兴趣的看上面几篇文章。
1. 我的代码我的坑(一) —— 自签名证书导致请求取消的问题(一)
2. 我的代码我的坑(二) —— UIImageView动画点击后动画和图片消失的问题(一)
3. 我的代码我的坑(三) —— iOS9系统WKWebView加载页面白板的问题(一)
4. 我的代码我的坑(四) —— iOS12系统自定义渐变色UISwitch手机横屏的异常问题(一)
5. 我的代码我的坑(五) —— 不可编辑状态的UITextView文本高度大于视图高度默认滚动到底部的问题(一)
6. 我的代码我的坑(六) —— UITextField输入长度自动截取时汉字和拼音带来的末位截取不能正常输入汉字的问题(一)
7. 我的代码我的坑(七) —— UIImageView做序列帧动画结束后没有回调并且“隐藏”(一)

问题描述

最近同事发现了个bug。

首先说下,我的手机系统使用的是iOS 13.1.2,在某一个情景触发内存的急速暴涨卡死,由于App功能过于复杂,并且不知道什么触发的时候,看内存图是看不出来的,所以记住了Profile工具,在各种分析Allocate的情况下,最终定义到了位置。是一个自定义View的展示,这个View里面layoutSubviews内部改变了自己的frame,导致了循环调用而崩溃。还需要说明的是,该View在外面用Masonry进行的约束。

- (void)layoutSubviews 
{
    [super layoutSubviews];
    self.frame = CGRectMake(self.x, 10, self.width, 10);  
}

但是需要说明:

  1. 只有在13.1.2系统并且在Debug模式下会出现,release是没有问题的。
  2. 其他系统版本没有问题。

所以有点怪异。


问题解决

删除了里面修改frame的逻辑,万年老代码了,不知道以前为什么这么写,这里就是在外面实例化这个视图的时候就自动布局了大小。就不会循环调用了,也就没有这个问题了。

感觉基本没人遇到我这个问题吧。

这句self.frame = CGRectMake(self.x, 10, self.width, 10);注释掉就好了。

后记

本篇主要讲述了iOS 13.1.2Debug调试模式系统layoutSubviews中修改frame循环调用导致的崩溃,感兴趣的给个赞或者关注~~~

我的代码我的坑(八) —— iOS 13.1.2 Debug调试模式系统layoutSubviews中修改frame循环调用导致的崩溃(一)_第1张图片

你可能感兴趣的:(我的代码我的坑(八) —— iOS 13.1.2 Debug调试模式系统layoutSubviews中修改frame循环调用导致的崩溃(一))