beginAnimations commitAnimations сохраняют вид? - PullRequest
0 голосов
/ 06 октября 2011

Предположим, (псевдокод)

view.alpha = 1.0;  
[beginAnimmations]  
[animationDuration = 1.0]
view.alpha = 0.0;
[commitAnimations]

[view removeFromSuperView];

Когда представление не сохраняется нигде, кроме его суперпредставления, следовательно, [view removeFromSuperView] сделает представление удаленным.

Isэто безопасно?или как мне сделать это правильно?

1 Ответ

0 голосов
/ 06 октября 2011

Если view не сохраняется нигде, кроме как с помощью суперпредставления , вызов [view removeFromSuperView]; полностью в порядке. И, как вы боитесь, view будет выпущен в то время. Таким образом, доступ к нему после вызова метода removeFromSuperView не будет безопасным.

Вы должны сохранить view, чтобы получить доступ к нему даже после того, как вы удалите его из суперпредставления.

Изменения в вашем коде:

Вы должны удалить view после окончания анимации. При создании анимации добавьте следующие строки.

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

Метод onAnimationStopped ,

- (void)onAnimationStopped {

    [view removeFromSuperview];
}
...