背景:
項目中使用了Facebook的FBRetainCycleDetector框架檢測內存泄漏問題。
登錄VC的view中放置了一個UITextField對象。
產品的要求是當進入登錄界面的時候,讓這個UITextField對象成為第一響應者彈起鍵盤。
所以我在登錄VC的-viewDidLoad方法中調用了該UITextField對象becomeFirstResponse方法。
但是當我pop到上一個控制器的時候,FBRetainCycleDetector框架提醒我發生了內存泄漏,但是我查看了下登錄VC的-dealloc方法是被調用了的,怎么會在它上面的UITextField對象沒有被釋放呢?
原因:
通過查看了蘋果開發者論壇和github上面另一個內存檢測的框架的討論,初步鑒定為UITextField本身的內存泄漏,也就是在iOS系統中沒有對它做好內存管理。
【https://forums.developer.apple.com/thread/94323】
【https://github.com/Tencent/MLeaksFinder/issues/80】
解決方式:
在-viewDidAppear方法中調用該UITextField對象becomeFirstResponse方法,就不會出現內存泄漏的問題了。