熱線:0532-83801234

2019-05-13

iOS之AFNetworking引起的内存洩露問題

       說起AFNetworking這個第三方框架, 應該是廣大的iOS開發者認可并使用的一個網絡請求框架。使用它,可以輕松的完成post、get等方式的網絡請求,也可以引入https證書進行雙向認證完成請求,極大的方便了使用者進行網絡請求,大大的提高了開發效率。

    可是,再優秀的框架,也難免有瑕疵的地方——AFN會引起内存洩露問題,如果你在項目中使用了AFN框架進行網絡請求,就難免會碰到這個問題。leaks測試下,會顯示出項目中運行時哪個地方引起了内存洩露,如下圖所示的,可以看到好多因為AFN引起的内存洩漏問題。

      究其原因是因為ARC機制導緻每當實例化Session類之後,都沒有地方釋放掉實例,而且創建請求時使用的語句AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];并不是一個單例,這就造成了内存洩露的問題發生。

      但是,查看AFN自帶的demo可以發現。在demo中,它裡面是創建了一個繼承自AFHTTPSessionManager的類AFAppDotNetAPIClient ,而AFAppDotNetAPIClient裡是用了單例創建的對象,所以隻需要咱們在項目的根控制器中,也使用單例去去創建請求就可以了。

      東八區品牌創意(青島)有限公司自2006年成立以來,業務不斷發展,現已涵蓋:品牌策略、品牌設計、網站建設、平面設計、包裝設計、LOGO\VI設計、企業宣傳片制作、活動策劃等一系列的服務,我們努力成為一家專業的為企業提供一站式服務的專業機構。與東八區聯手,我們與您的企業共創未來!