iOS 11 UITextField内存泄漏问题

一、背景

在项目开发的时候,使用了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")
            }
        }
    }
}
欢迎大家交流,这是个学习的地方!

你可能感兴趣的:(iOS 11 UITextField内存泄漏问题)