2011-10-06 6 views
0

가정 (의사 코드)beginAnimations commitAnimations는 뷰를 유지합니까?

보기 때문에 [보기 removeFromSuperView]의 수퍼, 다른 곳보다 유지되지
view.alpha = 1.0; 
[beginAnimmations] 
[animationDuration = 1.0] 
view.alpha = 0.0; 
[commitAnimations] 

[view removeFromSuperView]; 

뷰 혼성 할당 해제 될 수 있도록한다.

안전한가요? 또는 어떻게 올바르게 할 수 있습니까? view하면

답변

0

[view removeFromSuperView]; 완전히 괜찮아 호출, 그 수퍼가 아닌 장소에서 유지되지 않습니다. 그리고, 당신이 두려워 하듯이, view 그 시점에 공개됩니다. 따라서 removeFromSuperView 메서드 호출 이후에 액세스하는 것은 안전하지 않습니다.

수퍼 뷰에서 제거한 후에도 액세스하려면 view을 유지해야합니다. 코드에서

변경 :

당신은 애니메이션이 끝난 후 view을 제거해야합니다. 애니메이션을 만들 때 다음 줄을 추가하십시오.

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(onAnimationStopped)]; 

방법을 onAnimationStopped

- (void)onAnimationStopped { 

    [view removeFromSuperview]; 
} 
+0

EmptyStack : 다음 애니메이션은 시간이 걸립니다, 애니메이션이 완료되기 전에 뷰가 수퍼에서 제거되기 때문에 제대로 보이지 않을 수 있는가? – eugene

+0

애니메이션이 끝나면보기를 제거해야합니다. 편집을 참조하십시오. – EmptyStack

관련 문제