下面列舉兩種ARC致使內存泄露的狀況。 1,循環參照 A有個屬性參照B,B有個屬性參照A,若是都是strong參照的話,兩個對象都沒法釋放。 這種問題常發生於把delegate聲明爲strong屬性了。 例, @interface SampleViewController @property (nonatomic, strong) SampleClass *sampleClass; @end @interface SampleClass @property (nonatomic, strong) SampleViewController *delegate; @end 上例中,解決辦法是把SampleClass 的delegate屬性的strong改成week便可 2,死循環 若是某個ViewController中有無限循環,也會致使即便ViewController對應的view關掉了,ViewController也不能被釋放。 這種問題常發生於animation處理。 例, 好比, CATransition *transition = [CATransition animation]; transition.duration = 0.5; tansition.repeatCount = HUGE_VALL; [self.view.layer addAnimation:transition forKey:"myAnimation"]; 上例中,animation重複次數設成HUGE_VALL,一個很大的數值,基本上等於無限循環了。 解決辦法是,在ViewController關掉的時候,中止這個animation。 -(void)viewWillDisappear:(BOOL)animated { [self.view.layer removeAllAnimations]; }