1

私はアプリケーションで作業しており、ビューが消えたときにテーブルビューを削除し、ビューが表示されたときに同じテーブルビューを追加したいと考えています

現在

  1. A ctr(プッシュ)から -> B ctr

  2. B ctr(push) から -> C ctr -- viewwilldisappear のスーパービューから B ctr の tableview を削除しました -- 正常に動作します。

  3. From C ctr(pop) -> B ctr --ビューB ctrが表示されます。再度テーブル ビューを追加しました。Viewwillapreaは呼び出されますが、 tableview はサブビューとして追加されません。

4 B ctr(pop) から -> A ctr

  1. From A ctr(push) -> B ctr -- 今回は B ctr に tableview が表示されます。

サブビューとしてテーブルを追加していない popViewControllerAnimated に戻ったようです。

私はxibにテーブルを持っています。

割り当てられたメモリを解放するためにこれを行いたいです。

テーブルビューアウトレット

 @property (nonatomic,weak) IBOutlet UITableView *tView;

ビューのテーブル ビューを削除しますWillDisappear

  [self.tView removeFromSuperview];

viewWillAppear に追加し直す

  [self.view addSubview:self.tView];

前もって感謝します

4

2 に答える 2

1

理由がない限り、これについて心配する必要はありません。つまり、メモリ警告が繰り返されます。そして、それを行う場合、その理由を解明する必要があります - テーブル ビューである可能性は非常に低いです。どちらかといえば、テーブルビューに入力するためにロードするデータである可能性があるため、表示されていないときにそのデータを削除することを考えることができます...

とにかく、あなたの問題は、テーブルビューを破棄して再作成しないことです。あなたの財産:

 @property (nonatomic,weak) IBOutlet UITableView *tView;

であるweakため、スーパービューからビューを削除すると、ビューへの参照を保持しているものがないため、割り当てが解除されます。

後で電話するとき:

 [self.view addSubview:self.tView];

呼び出す前に、テーブル ビューを再作成してサブビューに追加する必要がありますself.tView = newTView

キーポイント:

  1. メモリの問題を修正します (真の原因を見つけるためのプロファイル)
  2. テーブルビューを削除しないでください
于 2015-05-16T10:44:52.893 に答える
0

weakUITableView のプロパティ属性を設定しました。スーパービューから削除すると、メモリから削除されます。

strongこれが起こらないように属性を設定できます。しかし、それはメモリを解放する目的でそれを削除するという点を無効にします。

新しい tableView を作成し、-viewWillAppearメソッドに設定できます。

これらの属性の詳細については、ドキュメントを確認してください。

また、さまざまなプロパティ属性をよく説明しているこの記事。

于 2015-05-16T10:46:06.967 に答える