一、背景
在項目開發(fā)的時候,使用了AMLeaksFinder,檢查界面元素的泄漏問題時,發(fā)現(xiàn)UITextFeild沒有被釋放,導(dǎo)致了內(nèi)存泄漏。
1、最新解決方案(2022/11/23)
- 使用下面的臨時方案,在打包安裝會發(fā)生崩潰,感謝謝謝@海洋之巔

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")
}
}
}
}