1

次のコードがあり (以下を参照)、それをそのままコンパイルすると、「内部コンパイラ エラー: バス エラー」が発生します。最後の ImageOne.transform をコメント アウトすると、すべて正常に動作します。ファイルが .m で終わる場合、.mm に変更すると問題なくコンパイルされ、問題が発生します。何か案は?

[UIView animateWithDuration:duration1 delay:delay options:UIViewAnimationCurveEaseIn animations:^{
            ImageOne.transform = CGAffineTransformMakeScale(scale1, scale1);
            ImageOne.alpha = 1.0f;

        } 
                         completion:^(BOOL finished){
                             [UIView animateWithDuration:SecondDuration delay:SecondDelay options:UIViewAnimationCurveEaseOut animations:^{
                                 ImageOne.transform = CGAffineTransformMakeScale(scale2, scale2);
                             }
                                              completion:^(BOOL finished){
                                                  [UIView animateWithDuration:SecondDuration delay:SecondDelay options:UIViewAnimationCurveEaseOut animations:^{
                                                      ImageOne.transform = CGAffineTransformMakeScale(scale1, scale1); //results in bus error, i think its due to nesting

                                                  }
                                                                   completion:nil];
                                              }];
                         }];
    }
4

1 に答える 1

1

単に追加するのではなく、なぜ別のブロックをネストするのですか

ImageOne.transform = CGAffineTransformMakeScale(scale1, scale1);

そのように最初のブロックに

completion:^(BOOL finished)
{
  [UIView animateWithDuration:SecondDuration delay:SecondDelay options:UIViewAnimationCurveEaseOut animations:^{
              ImageOne.transform = CGAffineTransformMakeScale(scale1, scale1);
              ImageOne.transform = CGAffineTransformMakeScale(scale2, scale2);

お役に立てれば。:)

于 2011-03-29T22:51:06.647 に答える