Сбой блока UIAnimation по условному предложению - PullRequest
1 голос
/ 08 апреля 2011

этот код вылетает с EXC_BAD_ACCESS (пожалуйста, простите мне форматирование, я, кажется, не могу обработать этот веб-редактор):

@implementation

BOOL imageZoomed=NO;


-(void)makeAnimation {
   [UIView animateWithDuration:1.0f
        animations:^{
            self.myImageView.alpha=1.0f;
            if (imageZoomed) {
                self.zoomImageView.alpha=0.0f;
                tempZoomImageView.alpha=1.0f;
            }


        }
        completion:^(BOOL finished) {
                   if (imageZoomed) {
                        self.zoomImageView.alpha=1.0f;
                        [tempZoomImageView removeFromSuperview];
               }
        }
}

Если я закомментирую блок if в анимации:, это сработает. imageZoomed вызывается до и после анимации без проблем. Я что-то упускаю с блоками и условными предложениями или блоками и переменными?

Спасибо за любой ответ, Маримба

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012
[UIView animateWithDuration:1.0f
                     animations:^{

                     }
                     completion:^(BOOL finished) {
                         if (finished) {
                         }
                     }];

не забудьте "];"

2 голосов
/ 14 апреля 2011

На первый взгляд, я не вижу ничего плохого в этом коде как таковом. Там нет ничего особенного WRT-блоков и условных предложений. Существуют специальные правила для переменных WRT, но, глядя на этот код, вы, вероятно, должны быть в порядке.

У вас, вероятно, есть объект, который был переиздан или что-то в этом роде. Я предлагаю внимательно рассмотреть self, zoomImageView и tempZoomImageView в качестве подозреваемых, поскольку они находятся в блоке if ... Попробуйте включить NSZombiesEnabled, чтобы получить исключение в тот момент, когда перезаписанный объект обменивается сообщениями.

...