0

Xcode の Apple UIPageViewController テンプレートを使用して、インタラクティブなフォトブックを作成しています。ページをめくる(新しいviewcontrollerを作成する)たびに、アプリがクラッシュするまでメモリ割り当てがどんどん増えていくという点を除いて、すべて正常に動作します。ビューコントローラーが「解放」されないように見えます(ARC環境でその言葉を使用することはまだ許可されていますか?)。ページのコンテンツとは何の関係もないようです...DataViewControllerのすべてのコンテンツ作成をコメントアウトすると、ページをめくるたびにメモリが増え続けますが、それほど壮観ではありません大きな画像が含まれているが、それでも忍び寄り続ける場合。

ここにはまったく同じ質問があります: PageViewController: How to release ViewControllers added to it? しかし、これはプレアークとストーリーボードの状況を扱っています。autorelease の追加は許可されておらず、コンパイラが処理していないようです。:-(

助言がありますか?

4

2 に答える 2

3

問題は、決して十分ではない「UIImage imagedNamed」構造であることが判明しました。最近のxcodeリリースでこれが修正されたことをどこかで読んだ後、チェックしなかったのはおそらく私自身のせいです。そのため、画像がキャッシュされなくなったと思いましたが、その逆でした。すべてを「UIImage imageWithContentsOfFile」に変更すると、アプリは赤ちゃんの底としてスムーズに動作し始めました。

于 2012-03-11T11:07:26.633 に答える
0

非常に大きな画像の絵本を作るのにも同じ問題がありました。私はあなたがリンクを提供した他の質問に行きました、そしてそれは私のためにそれを解決しました。「」を追加autoreleaseすると、メモリが解放されます。

UIPageviewcontrollerデリゲートメソッドで" " viewControllerAtIndex。私はから変更しました:

// Create a new view controller and pass suitable data.
ContentViewController *contentViewController = [[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil];

自動リリースを追加しました

// Create a new view controller and pass suitable data.
ContentViewController *contentViewController = [[[ContentViewController alloc] initWithNibName:@"ContentViewController" bundle:nil] autorelease] ;

これはアップルの例には含まれていませんが、各ページにxibも使用しています。私はこれをinstrumentsを使用してデバッグしており、メモリがすぐに再利用され、以前は呼び出されなかったときにdeallocが呼び出されるのを確認しました。

ここで答えが見つかりました.... https://stackoverflow.com/a/7934392/1212585

于 2012-02-15T23:09:03.303 に答える