1

私が作成しているiOSアプリには、完全に正常に動作する基本的なアニメーションがいくつかあります...昨日まで。

どうやら何らかの影響を与える変更を加えたようで、問題が何であるかを特定するのに苦労しています。

コードをステップ実行すると、このコードのチャンクに到達し、commitAnimation 行をステップオーバーした後に終了します ([UIView animateWithDuration: ...] の美しさに気付く前に、最初にこれを書きました:

UIView *favoritesTabItemView = [appDelegate.tabBarController.tabBar viewWithTag:0];
CGPoint startingPoint = [[magazineView superview]
convertPoint:CGPointMake(magazineView.center.x, magazineView.center.y) toView:appDelegate.window.rootViewController.view];
CGPoint targetPoint = CGPointMake(favoritesTabItemView.center.x - 214.0, favoritesTabItemView.center.y);

//shrink the icon down
UIGraphicsBeginImageContextWithOptions(magazineView.bounds.size, NO, 0.0);
[magazineView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[UIImageView beginAnimations:nil context:nil];
[UIImageView setAnimationDuration:0.1];
PublicationCoverImageReflectionView.alpha = 0.0;
[UIImageView commitAnimations];  //<-- crash happens after this line

commitAnimation をステップオーバーした後のデバッガーからのエラーは、ほとんど役に立ちません。

*** Terminating app due to uncaught exception 'NSRangeException', reason: 
'*** -[__NSArrayM objectAtIndex:]: index 9 beyond bounds [0 .. 8]'
*** First throw call stack:
(0x35c8b88f 0x31604259 0x35bd49db 0x126d5d 0x12e65f 0x349da6c9 0x34a66531 0x35c57547 0x35be3097 0x349da3eb 0x307a3a13 0x10f8ef 0x35be53fd 0x307a9faf 0x307a9f6b 0x307a9f49 0x307a9cb9 0x307aa5f1 0x307a8ad3 0x307a84c1 0x3078e83d 0x3078e0e3 0x3596122b 0x35c5f523 0x35c5f4c5 0x35c5e313 0x35be14a5 0x35be136d 0x35960439 0x307bce7d 0xbb109 0xbb0c8)
terminate called throwing an exception(lldb)

これがどのような種類の配列について話しているか知っている人はいますか? 死にかけているのはUIKit呼び出しなので、配列はUIKitで使用されるビューの配列であると考えていますが、私には可視性がありません...

これに対処する方法、またはさらに調査する方法についてのアイデアは素晴らしいでしょう!

4

2 に答える 2

0

に切り替えUIImageViewてみてくださいUIView

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.1];
PublicationCoverImageReflectionView.alpha = 0.0;
[UIView commitAnimations];
于 2012-07-20T20:30:11.990 に答える
0

だから私は問題を理解しました.それはCoreAnimationに直接関係していませんでした...それは何が悪いのかの兆候でした.

私はいくつかのブロックを呼び出していましたが、私のデバッグ セットアップはクラッシュしている場所を見つけることができませんでした。

私はさらにデバッグのヘルプを探しましたが、最も役立つ問題は、例外が発生するたびにトリガーされるブレークポイントを設定する方法を学ぶことでした。これは、それがどこで起こっているかを正確に見つけるのに役立ちました。ブロック内で例外をスローしていましたが、デフォルトのデバッガー GUI ではこれが示されませんでした。ただし、Xcode でコンソールを使用しても解決できたはずです。

すべての例外にブレークポイントを設定する - 非常に便利です! Xcode 4 の「実行 > Objective-C 例外で停止」の方法を学習します か?

また、このスレッドをチェックして、シンボリック化されたスタック トレースを常に取得できるように、アプリに追加する優れたメソッドを確認してください

于 2012-08-09T19:25:40.567 に答える