为什么要对AFN进行二次封装?

近期面试一个人的时候,讲到AFN的封装,一般人只答到一方面,就是在AFN的基础之上进行封装一个网络层,降耦合。这样答我认为只答到了其中一方面,还有另一方面就是我们在做网络请求的时候,NSSession,一定会对当前代理对象进行强引用,所以当我们做一个网络工具类的时候,这个工具类肯定是不会释放的。所以AFN做工具类的二次封装是必要的


The session object keeps a strong reference to the delegate until your app exits or explicitly invalidates the session. If you do not invalidate the session, your app leaks memory until it exits. --->苹果官方文档

也就是说,NSSession的代理对象和NSSession一定会循环引用,也解释了我们为什么要封装单例工具类。
而且如果你不封装成单例的话,每次调用请求工具类,因为都是不释放的,所以都会造成内存泄漏,故而都会用静态变量static修饰

你可能感兴趣的:(为什么要对AFN进行二次封装?)