1

iOS アドレス帳に似た UITableView を作成しました。これにより、1 つの行で画像を選択でき、データを入力するためのテキスト フィールドを持つ追加のカスタム セルがあります。大きな画像をロードした後にのみこの問題に遭遇し、コンソールにメモリ警告が表示されます。

メモリ警告を受信しました。レベル=1

モーダル ビューで UIImagePickerController を使用して画像を読み込みます。

したがって、メモリの警告が発生すると、親の tableviewcontroller は空の viewDidUnload を実行します。

- (void)viewDidUnload { }

モーダル ビュー (画像を選択) を閉じると、テーブルビューがデータをリロードし、すべてが正常に表示されます...ただし、スクロールが正しく機能しません。動作は非常に奇妙です: スクロールは、特定のポイントを超えて停止しません。スクロールを文字通り完全に引き下げることができますが、離すとすぐにスクロールが元に戻り、一番下のセルが非表示になります (これは正常に表示されます)。

私の人生では、何が起こっているのか、なぜこれがメモリ警告の後にのみ発生するのか理解できません。

これは私の iPhone でのみ発生しています (iPhone 4 でテスト中)。これにより、メモリの警告がおそらく問題の原因であると思われます。

4

3 に答える 3

1

回避策があります。モーダル ビューを表示する前に、キーボードを閉じて、消えるまで待つ必要があります。

于 2011-11-27T11:14:42.827 に答える
0

を空に設定する-(void)viewDidUnload;ことは、少なくとも への呼び出しが必要であるため、そのコンテキストでは間違いなく間違ってい[super viewDidUnload];ます-(void)loadView;

于 2011-11-27T11:55:35.840 に答える
0

[loadView] または [viewDidLoad] で設定したものはすべて [viewDidUnload] でクリーンアップする必要があります。逆に、[viewDidUnload] で破棄したものはすべて、[loadView] または [viewDidLoad] で再作成して再初期化する必要があります。

これは、2 番目の init/dealloc シーケンスとして扱う必要があります。

于 2010-09-30T09:39:33.697 に答える