定時器(NSTimer):我們在使用NSTimer時經(jīng)常會作為一個類的屬性使用仿贬,
而NSTimer在初始化的時候回指定self為target.這就造成了self-->NSTimer-->self的循環(huán)引用的情況。另外在NSTimer一致處于validata狀態(tài)時其引用計數(shù)器一直是大于0的坠韩,所以在不使用定時器以后要調(diào)用invalidata移除定時器。
Block的使用
block在引用外部的變量是炼列,會對外部變量進(jìn)行copy操作只搁。在(ARC)模式下會對變量進(jìn)行強(qiáng)引用,(MRC)模式下變量retainCount加1俭尖。當(dāng)一個類把block作為成員變量時氢惋,在block內(nèi)部使用了這個類本身洞翩。造成self-->block-->self或者self-->block-->類的成員變量循環(huán)引用的情況。
解決辦法:在給block賦值時在外部用__blockmySelf = self焰望;用__block修飾使用到的類骚亿。
代理(delegate)
解決辦法,在使用代理是在(ARC)模式下使用assign在(MRC)模式下使用weak熊赖。