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")
            }
        }
    }
}
欢迎大家交流,这是个学习的地方!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容