关于ARC下修饰代理用assign还是weak
2017-02-08 本文已影响30人
为了你而活
今天在测试公司项目的时候,偶然发现了一个问题,因为公司项目已经成形了,自己虽有心将一些东西大改之,无奈,上头有管着的。于是,在测试页面跳转的时候,来回切页面,结果崩。崩。崩。因为这个项目中的网络请求是单独封装的一个类,采用代理回传的方式返回结果,所以当我某个类A创建公共类对象,使用公共类网络请求方法,设代理为self,在还没有触发回调函数的时候页面跳转到类B,然后再跳转重新创建一个类A,而此时存在于上一个类A中的请求正好回调,而上一个类A已经销毁了,这个时候就会发生崩溃,崩溃的原因可能是采用assign修饰代理时,当页面销毁时这个对应的代理地址并没置为nil,从而导致成为了一个野指针,然后在调用方法时便会产生崩溃。采用weak关键字便不会出现此错误,他会在销毁时便将其地址置为nil,不会造成崩溃。