2017-08-28 51 views
0

我是iOS新手,我有标签栏。我有4个标签,如Facebook。建议 - 底部导航处理

在我的情况下,当用户转到其中一个屏幕时,应该随时从服务器更新所有数据。

有人说打电话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()将只能被称为第一次的视图控制器被加载。当用户切换选项卡时,使用标签栏控制器通常会将视图控制器保存在内存中,所以如果您希望每次用户进入新屏幕时都进行加载,则这不是最佳选择。

我建议使用viewWillAppearviewDidAppear。如果您要从网络更新数据,请确保在后台线程上进行加载,以确保接口不会被阻止(不管您使用哪种方法)。

就我个人而言,我会把网络加载代码放在viewDidAppear之内,对于我来说,在视图完成显示后调用网络更有意义,因为它可能不会立即结束。通过这种方式,呈现显示数据正在加载到用户的UI元素也更容易。