1

질문 : 아래 애니메이션이 적용된 UIView가 포함 된 ViewController가 할당 해제 된 경우 메모리 누수가 발생하거나주기가 유지됩니까?이 CAAnimation으로 인해 누출 또는 유지가 발생합니까?

즉,이 애니메이션을 UI에 적용하면 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 메소드의 로그 메시지가 표시되는지 확인하십시오. 그렇지 않다면, 당신은 어딘가에 그보기 컨트롤러와 함께 메모리 문제가 있다는 것을 알고, 왜 디버깅을 시작할 수 있습니다.