iphone - 在启动时加载 plist 需要很长时间。如何显示事件指标?

标签 iphone ios xcode

我的应用程序在启动时加载了一个在线 plist,这是在将要显示的 tableview 中显示数据所必需的。根据互联网连接,加载 plist 可能需要相当长的时间(4-5 秒),并且启动屏幕会一直显示。现在,我想在状态栏中放置一个事件指示器(当启动屏幕仍然显示时),以便用户知道该应用程序正在忙于加载。

我正在 ViewDidLoad 中加载 plist 并创建数组等,但我不确定如何实现我在上面勾勒的内容。

你对这件事有什么看法吗?谢谢。

最佳答案

如果我是你,我会重新考虑你的方法。除非您特别采取措施避免它,否则您下载 plist 的代码很可能会在 applicationDidFinishLaunching: 返回之前被调用。这不好,因为如果需要很长时间,那么看门狗可能会在您的应用程序真正正确启动之前杀死您的应用程序。不是什么好事。

您真的应该在后台线程中开始下载,并在您的实际 View 中粘贴一个微调器。所以像这样:

- (void)viewDidLoad {
    ...

    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);
    [spinner startAnimating];
    [self.view addSubview:spinner];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // Do your downloading of your plist, etc
        dispatch_async(dispatch_get_main_queue(), ^{
            [spinner removeFromSuperview];
        });
    });
}

关于iphone - 在启动时加载 plist 需要很长时间。如何显示事件指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8865169/

相关文章:

iphone - 获取一周的第一天和最后一天

iphone - UITableView有没有退出编辑模式?

ios - 存储非属性对象存在问题

iphone - InAppSettingsKit Tabbar,不调用settingsViewController

iphone - ASIHTTPRequest 无法创建请求(错误的 URL?)错误

ios - Apple 会离线测试 iOS 应用程序吗?如果没有连接,如何处理错误?

ios - 在 Swift 中使用 Bool 的 View Controller 扩展

ios - 如何执行自定义单元格的方法

ios - 在 Swift 中进行应用内购买后,广告不会被删除

ios - 对成员 'collectionView' Swift 4 的模糊引用