在哪里调用函数填充图表数组以减少加载时间?

时间:2017-11-18 14:36:37

标签: ios charts ios-charts viewdidappear

我正在使用iOS-Charts,我有一个ViewController,我在其中调用填充图表数据的函数。

目前我从ViewDidAppear调用它,但加载需要很长时间。哪个地方最好叫它?

1 个答案:

答案 0 :(得分:1)

如果您在viewDidAppear中加载了昂贵的加载代码,则在视图控制器完全在屏幕上之前它将无法运行。如果可能,您可能希望在viewDidLoad中执行此操作,因为这是在视图控制器在屏幕上之前调用的。它也只会在视图控制器的初始设置期间调用一次,而如果您导航离开/返回此视图控制器,则可以多次调用viewDidAppear

对评论的回应

问题是你在主线程/队列上做了大量的工作。所以执行的线程到达你的viewDidLoad然后一切都必须等待你的工作完成,然后你的函数才能退出并且你的视图控制器可以呈现。如果可能,您想要做的是在一个单独的队列中异步执行您的工作,然后在工作完成时更新主线程上的屏幕:

override func viewDidLoad() {
    super.viewDidLoad()
    DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {
        let results = someExpensiveOperation()
        DispatchQueue.main.async {
            updateViewWithResults(results)
        }
    }
}