UIAnimation块在条件子句上崩溃

时间:2011-04-08 14:59:06

标签: animation uiview conditional objective-c-blocks

此代码与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 个答案:

答案 0 :(得分:2)

从表面上看,我认为这段代码本身没有任何问题。没有什么特殊的WRT块和条件子句。有特殊规则的WRT变量,但看看这段代码,你可能应该没问题。

你可能有一个被过度释放的对象或者那些东西。我建议仔细查看self,zoomImageView和tempZoomImageView作为嫌疑人,因为它们位于if块中...尝试启用NSZombiesEnabled以在您发布的过度对象被发送时获得异常。

答案 1 :(得分:2)

[UIView animateWithDuration:1.0f
                     animations:^{

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

不要忘记“];”