定时器(NSTimer):我们在使用NSTimer时经常会作为一个类的属性使用,
而NSTimer在初始化的时候回指定self为target.这就造成了self-->NSTimer-->self的循环引用的情况。另外在NSTimer一致处于validata状态时其引用计数器一直是大于0的,所以在不使用定时器以后要调用invalidata移除定时器。
Block的使用
block在引用外部的变量是,会对外部变量进行copy操作。在(ARC)模式下会对变量进行强引用,(MRC)模式下变量retainCount加1。当一个类把block作为成员变量时,在block内部使用了这个类本身。造成self-->block-->self或者self-->block-->类的成员变量循环引用的情况。
解决办法:在给block赋值时在外部用__blockmySelf = self;用__block修饰使用到的类。
代理(delegate)
解决办法,在使用代理是在(ARC)模式下使用assign在(MRC)模式下使用weak。
网友评论