0

XIB ファイルから定義された UItableViewCell があります。このセルには UIScrollView が含まれており、その場で UIView オブジェクト (viewXY) で埋められます。コードのどこでもアークを使用しています。UI は次のようになります。

セル 0: [ view00 view01 view02 ...]

セル 1: [ view10 view11 view12 ...]

など...、ここで [ ] は水平方向にスクロール可能なセルの内容です。

問題: アプリのプロファイリングを行ったところ、縦方向ににスクロールすると、メモリ フットプリントが急速に増加し、私が確認した限りでは、通常の状態に戻ることはなく、横ばいにもなりません。さらに重要なことに、いくつかのセルを下にスクロールしてから元に戻すと、メモリも増加します....

計器ツールで漏れをチェックしましたが、何もありませんでした。

viewXY を作成するコードの部分に問題を絞り込みました。私が使用する場合:

myDisplay* viewXY;//myDisplay is a UIView subclass
-->viewXY = [[NSBundle mainBundle] loadNibNamed:AW_UI_VE owner:self options:nil][0];
[scrollView addSubview:viewXY];

セルをめくると、記憶が制御不能になります。NIB はシンプルな UIView+UIImageView+2 Labels です....

UIImageView *viewXY = [UIImageView alloc] initWithImage:[blablabla]]
[scrollView addSubview:viewXY];

すべて順調。インストゥルメントのLive Bytesは急速に停滞期に達します。

テストの一環として、カスタム クラスで定義されているメソッドを実行せずに NIB ファイルをロードするため、IB で定義されている IBOutlets (デフォルトのラベル テキスト、画像など) が出力されます。

このようなものは私を夢中にさせています。

私が間違っていることを理解するための提案は大歓迎です。

4

3 に答える 3

0
[scrollView addSubview:viewXY];

あなたの問題があります。スクロール ビューに何かを追加していて、決して削除しないでください。

物事の音から、あなたは UITableView を適切に使用していません。UITableViewDelegate および UITableViewDataSource プロトコルのメソッドを実装するビュー コントローラーが必要であり、それらを使用してテーブルにデータを入力します。テーブルに直接何も追加することはありません。要求されたときにのみセルを提供します。

于 2013-02-24T04:39:27.260 に答える
0

これがメモリ使用量に関連しているかどうかはわかりませんが、ドキュメントUINibではこのユースケースに推奨されています。

同じ nib データを繰り返しインスタンス化する必要があるときはいつでも、アプリケーションはUINibオブジェクトを使用する必要があります。

もう 1 つの可能性は、 にリテイン サイクルがあることですmyDisplaystrongあるべきプロパティはありますかweak

于 2013-02-24T00:22:22.060 に答える