1

Xコードは初めてで、どこでも検索して「すべて」を試してみましたが、運がありませんでした。あなたが私を助けることができれば私はあなたに歌を歌います:)

大量のメモリを使用するiPadアプリを作成しています。プロジェクトのサイズは約100mb(多くの画像)ですが、Activity Monitorは、Iveがすべてのビュー(xibファイル)を切り替えた後、最大140mbの「実メモリ」を使用していることを示しています:(

ビュー(xibファイル)を切り替えるたびに、メモリフットプリントが増加します。ARCが有効になっているため、前のビューをメモリから解放できません。切り替えるページが10ページ(xibファイル)あります。

このコードを使用してxibファイルを切り替えています。

viewController2 *view2 = [[viewController2 alloc] initWithNibName:@"viewController2" bundle:nil];
view2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:view2 animated:YES];

戻るか次のビューに切り替えるときは、同じ種類のコードを使用します。

[self dismissModalViewControllerAnimated:NO];、を使ってみまし[self.view removeFromSuperview];self.view = nil;が、メモリが増え続けています。

私が理解しているように、ビューは互いに積み重ねられているため、メモリが増加します。

次のビュー(xib-file)に切り替えると同時に、最初のビューのメモリ使用量を強制終了するにはどうすればよいですか?

この問題により、私はすべての髪を抜くことができました:(

4

1 に答える 1

1

40 種類のフルスクリーン ビュー コントローラーを備えたアプリがあります。これは一種のインタラクティブなスライド ショーで、各スライドに何らかの相互作用があります。このアプリをマスター ビュー コントローラーでセットアップしました。マスター ビュー コントローラーは、どのビュー コントローラーがいつ表示されるかを制御します。新しいビュー コントローラーを子ビュー コントローラーとして追加し、新しいビュー コントローラーのビューをマスター ビュー コントローラーのビューのサブビューとして追加することで、あるビュー コントローラーから次のビュー コントローラーに移行します。

[self addChildViewController:newView];
[self.view addSubview:newView.view];

selfマスターView Controllerであること。次に、UIViewtransitionWithView:duration:options:animations:completion:クラス メソッドを使用して、新しいビューを表示します。完了ブロックでは、ビューとビュー コントローラーが削除され、ARC がそのメモリを破棄できるようになります (これらのオブジェクトへの他の強い参照がない限り)。

void (^theCompletion)(BOOL) = ^(BOOL finished) { 
    [oldView.view removeFromSuperview]; 
    [oldView removeFromParentViewController]; 
};
于 2012-05-03T19:11:26.813 に答える