2017-08-28 15 views
0

私はiOSで新しく、タブバーを持っています。 Facebookのような4つのタブがあります。アドバイス - ボトムナビゲーションの取り扱い

私の場合、ユーザーがその画面のいずれかに行くと、いつでもすべてのデータをサーバーから更新する必要があります。

1人の男が、viewDidLoadを頻繁に呼び出すとメモリリークを起こす可能性があると述べました。本当?

ここで最高のプレーは何ですか?毎回viewDidLoad()と呼び出し、サーバーからデータをロードするか、毎回viewDidLoad()を呼び出さない別の方法があります。

画面

enter image description here

+2

viewDidAppear()? – Siyavash

+1

@pmbここに答えがあります:https://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of。そうは思いませんが、メモリリークについてはわかりません。でも、他のメンバーに提案してもらいたいです。 –

答えて

2

viewDidLoad()が唯一のビューコントローラがロードされる最初の時間と呼ばれることでリフレッシュする一切のプルはありません。タブバーコントローラを使用すると、通常、ユーザがタブを切り替えるときにビューコントローラがメモリに保持されるので、ユーザが新しいスクリーンに行くたびにロードするようにするには、これは最適な場所ではありません。

viewWillAppearまたはviewDidAppearを使用することをお勧めします。ネットワークからデータを更新する場合は、バックグラウンドスレッドでロードして、インターフェイスがブロックされないようにしてください(使用する方法に関係なく)。

個人的に私はネットワークロードコードをviewDidAppearの中に入れていますが、おそらくすぐに終了しないため、ビューが表示された後にネットワークを呼び出す方が意味があります。この方法では、データがユーザーにロードされていることを示すUI要素を提示する方が簡単です。