在https://github.com/Tencent/MLeaksFinder中使用MLeaksFinder时。我收到一个警告,提示未释放最后一个UIViewController中的UITextField。
我检查了Xcode上的内存图,发现UIKeyboardImpl仍在其m_autofillGroup(NSMutablableDictionary)中保存引用
然后我在UIWebView和WKWebView中尝试了此操作,并发现了相同的问题。 m_autofillGroup的打印如下:
{
UIAutofillUUIDKey = "DBE0B81A-5E8E-444F-8FF6-0552C47FA554";
UITextContentTypePassword = "<UITextField: 0x107012600; frame = (20 46; 335 36); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x1c5a45a90>; layer = <CALayer: 0x1c4e2bbe0>>";
UITextContentTypeUsername = "<HLFullPhoneNumberTextField: 0x107058c00; baseClass = UITextField; frame = (20 0; 335 36); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x1c5a45010>; layer = <CALayer: 0x1c4e2b840>>";
}
我也在不同的iOS系统中进行了尝试,发现iOS 11.4和iOS 12出现了此问题,但iOS 11.0很好。
我尝试了resignFirstResponder和endEditing,但是没有用。
能帮我解决这个问题,并在不更改私有API的情况下发布参考。