私はUIScrollViewに大きなビューのリストを実装しました。私は、私のアプリの性質のため、テーブルビューを使用することはできません。removeFromSuperView/memory/dynamic viewの切り替え
私は基本的にUIScrollViewの中にあるビューコントローラそのものである 'ブロック'のコレクションを持っています。すべてが正常に機能していますが、非常に大きなページではメモリが問題になります。私は正常にサブビューの動的追加を実装している(彼らが画面に来るとき、彼らはレイアウトされ、親のビューに追加されます)。ブロック自体は一度にセットアップされ、作成されますが、実際のビュー、つまりblock.viewは画面に表示されるまで大きなコンテナに追加されません。これはうまくいきますが、オフスクリーンになったらメモリからビューを削除する方法が必要です。 removeFromSuperViewはそれらを消してしまいますが、メモリの使用量は減少しません。
FromSuperViewを即座に削除すると、addSubviewの後にブロックが表示されず、メモリが上がらない。ドローサイクルの後にFromSuperviewを削除すると、メモリが描画に上がり、ビューがもう表示されなくても元に戻りません。実際にビュー全体を解放するまでは、ビューがキャッシュされているようです。これは、たとえそれが作成されていたとしても、それを描く前にあまりメモリを使用していなかったので意味がありません。
他の多くの(レイアウトなどの)情報を保持している私のブロック(viewcontroller)に属しているため、ビューを解放できません。私はちょうどメモリを取り戻す必要があります。私は描画サイクルの前にメモリ内のビューを保持することは、メモリが上がる原因ではないので、私はそれを取り除く必要はありません知っている。
たとえば、addSubviewの代わりに保持すると、私のビューはまだ周囲にありますが、それほど多くのメモリは使用されません。
私がUIViewsは、それが表示されるまで、実際に自分自身のためにレイヤーを割り当てないことについてスマートであると考えてVC