1

問題:如果包含應用了以下動畫的UIView的ViewController被釋放,會導致內存泄漏還是保留循環?此CAAnimation會導致泄漏或保留循環嗎?

換句話說,如果我將這個動畫應用到uiview,當uiview的父VC被解散或釋放時,是否會導致內存泄漏或保留週期?

+(CAAnimation*)fadeOfRoomStatusLabel 
{ 
    //Customize animation 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    animation.FromValue = [NSNumber numberWithFloat:0.2f]; 
    animation.toValue = [NSNumber numberWithFloat:1.0f]; 
    animation.autoreverses = YES; 
    //animation.BeginTime = CACurrentMediaTime()+.8; 
    //animation.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut]; 
    animation.removedOnCompletion = NO; 
    animation.duration = 1; 
    animation.repeatCount = 99; 
    return animation; 
} 

回答

1

不,它不會因爲它沒有任何明確設置的引用回到它所連接的視圖。但是,如果稍後將動畫的委託設置爲對動畫有強引用的對象(直接或間接),則您將有一個保留週期,因爲動畫實例將保留其委託。您必須在某個時間清除代表以便發佈。

這很容易測試這些。只需將調試日誌消息添加到視圖控制器的方法-dealloc即可。當您關閉視圖控制器時,請確保您看到來自其-dealloc方法的日誌消息。如果你不知道,你知道你在某個地方有該視圖控制器的內存問題,並且你可以開始調試原因。