热线: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设计、企业宣传片制作、活动策划等一系列的服务,我们努力成为一家专业的为企业提供一站式服务的专业机构。与东八区联手,我们与您的企业共创未来!