iOS上的启动延迟

时间:2015-03-02 15:17:39

标签: ios iphone cocoa-touch

当用户启动我的应用时,我从websocket请求聊天系统的会话列表。 当websocket响应请求时,我解析结果以构建会话,然后我解析消息并将它们添加到每个Session的messageList中,如下所示:

    for (NSDictionary *session in sessions) {
      for (NSDictionary *message in messages) {

        ChatMessage *message = [[ChatMessage alloc] init];
        [listOfMessages addObject:message];

       } 
    }

这会导致启动时滞后一秒钟。我怎样才能减少呢?

编辑:手机的CPU占用了100%的时间,这就是问题所在,而不是网络问题因为我在广告阵列上准备了所有JSON。

2 个答案:

答案 0 :(得分:0)

  

如何减少它?

  • 预先加载较少。通常可以非常快速地执行小型网络请求;如果您的启动需要一整秒,减少等待的一种方法是使用第一个请求加载更少。你能加载足够的力量让用户在接下来的四五秒内开始使用你的应用吗?

  • 保留以前的数据。也许应用在上一个会话中加载的数据足以让用户继续使用几秒钟。使用该数据,即使您必须让用户知道它正在更新,也可以为您提供足够的时间来刷新应用程序。

  • 为用户提供一些操作。如果您在处理完整请求之前绝对无法继续前进,也许您可​​以在请求时提供一些有用或有趣的互动正在发生。即使在下载数据时显示进度也足够了 - 任何阻止应用程序在初始阶段都没有做任何事情的事情。

答案 1 :(得分:0)

在后台队列中调用此方法:
1.使用GCD并致电dispatch_async
2.创建自己的NSOperationQueue并为其添加NSBlockOperation