一、背景
在项目开发的时候,使用了AMLeaksFinder,检查界面元素的泄漏问题时,发现UITextFeild没有被释放,导致了内存泄漏。
1、最新解决方案(2022/11/23)
- 使用下面的临时方案,在打包安装会发生崩溃,感谢谢谢@海洋之巅
image.png
- 所以最新解决方案:
a:OC版本
self.autocorrectionType = UITextAutocorrectionTypeNo;
a:Swift版本
self.autocorrectionType = .no
2、临时解决方案
新建UITextField Category.在Category中,重写removeFromSuperview方法
1.OC版本
- (void)removeFromSuperview{
NSString *version = [UIDevice currentDevice].systemVersion;
if (version.doubleValue >= 11.0) {
id view = [self valueForKey:@"textContentView"];
if (view) {
[view removeFromSuperview];
[self setValue:nil forKey:@"textContentView"];
}
}
}
1.swift版本
extension UITextField {
open override func removeFromSuperview() {
if #available(iOS 11.0, *) {
let view = self.value(forKey: "textContentView") as? UIView
if (view != nil) {
view?.removeFromSuperview()
self.setValue(nil, forKey: "textContentView")
}
}
}
}
欢迎大家交流,这是个学习的地方!
网友评论