1

わかりました、これは私にとって本当に気が遠くなるようなものでした。私は本当にそれを理解することができません...私はそれをグーグルで検索しましたが、まだ何もありません.

ルート ビュー コントローラーをプッシュする UINavigationController をセットアップしました。次に、UIButton が押されると、ルート ビュー コントローラーが新しいビュー コントローラー (実際には TableViewController) をプッシュします。

「アニメーション」を「YES」に設定した場合にのみ、アプリがクラッシュします。

[[self navigationController] pushViewController:listView animated:YES];

これを変更して「アニメーション」を「いいえ」に設定すると、アプリは正常に続行され、見事に機能します...「アニメーション」を「はい」に戻すと、再びクラッシュします。

最終的には、アニメーションを保持できればいいのですが、結局のところ、それは iOS の最も美しいものの 1 つですが、この現在の状況では、何が起こっているのかを一生理解することはできません.

ここで何が問題なのかを理解するのを手伝ってください。

4

2 に答える 2

1

ベルナさん、ありがとうございます。あなたは実際に私を解決に導くヒントをくれました。問題は、私がプッシュしていたビュー コントローラーは実際にはテーブル ビュー コントローラーであり、そのセルは NSArray で見つかったエントリに基づいて動的に作成されるということです。viewDidLoad 関数で NSArray を初期化していましたが、autorelease に設定していたため、ビューが CALayer によって描画される前にメモリから解放されていました。

于 2011-08-23T09:16:26.573 に答える
1

アニメーションがオンになると、コア アニメーションはCALayer、ルート ビュー コントローラーと新しいビュー コントローラーの両方から、ビューの描画部分であるオブジェクトにアクセスします。アニメーションがオフになっている場合、コア アニメーションはルート ビュー コントローラーのCALayerオブジェクトを必要としません。ルート ビューでいくつかのビューを解放していて、それがバッキングCALayerオブジェクトをあまりにも早くリリースしている可能性があります。

于 2011-08-22T13:59:26.047 に答える