UITextField在iOS 11内存泄漏问题
程序员文章站
2022-04-07 19:41:56
在项目优化和检查性能时候,使用了MLeaksFinder,检查界面元素的内存泄漏问题时,发现退出登录界面时候,出现了内存泄露。打印日志如下:
In case that UIT...
在项目优化和检查性能时候,使用了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并没释放。接下来就是分析问题存在,步骤如下
考虑强引用问题,将UITextField属性定义为弱引用,发现问题依然存在。 屏蔽密码框,发现问题不存在,然而证明,问题在于密码框 查看密码框与用户框区分,在于secureTextEntry属性,假设是由于该属性引用 注释密码框的secureTextEntry设置,发现问题不存在解决思路
自定义控件,可行性不大 在UITextField的委托事件,处理secureTextEntry-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ if (textField == self.passField) { textField.secureTextEntry = YES; } else { textField.secureTextEntry = NO; } return YES; }