iOS UITextField在iOS 11内存泄漏

释放双眼,带上耳机,听听看~!

在项目优化和检查性能时候,使用了MLeaksFinder,检查界面元素的内存泄漏问题时,发现退出登录界面时候,出现了内存泄露。打印日志如下:

In case that UITextField should not be dealloced, override -willDealloc in UITextField by returning NO.
View-ViewController stack: (
DLTLoginViewController,
UIView,
UIScrollView,
UIView,
UITextField
)

上面MLeaksFinder日志,可以发现 UITextField并没释放。接下来就是分析问题存在,步骤如下

  1. 考虑强引用问题,将UITextField属性定义为弱引用,发现问题依然存在。
  2. 屏蔽密码框,发现问题不存在,然而证明,问题在于密码框
  3. 查看密码框与用户框区分,在于secureTextEntry属性,假设是由于该属性引用
  4. 注释密码框的secureTextEntry设置,发现问题不存在

解决思路

  1. 自定义控件,可行性不大
  2. 在UITextField的委托事件,处理secureTextEntry
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField == self.passField) {
textField.secureTextEntry = YES;
} else {
textField.secureTextEntry = NO;
}
return YES;
}

人已赞赏
iOS文章

iOS RAC基本常识

2020-3-25 3:10:23

iOS文章

iOS开发构造版本一直无法出来

2020-3-25 5:58:33

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索