iOS上的启动滞后
问题描述:
当用户启动我的应用程序时,我从websocket请求聊天系统的会话列表。 当WebSocket的响应请求,我分析的结果来建立会话,然后我解析消息,并将它们添加到每个会话的给messageManager,就像这样:iOS上的启动滞后
for (NSDictionary *session in sessions) {
for (NSDictionary *message in messages) {
ChatMessage *message = [[ChatMessage alloc] init];
[listOfMessages addObject:message];
}
}
这导致一秒钟的延迟,在启动。我怎样才能减少它?
编辑:它把手机的CPU在100%几秒钟,这就是问题,而不是网络之一,因为我已经准备好了广告阵列上的所有JSON。
答
我该如何减少它?
负荷少前面。小型网络请求通常可以非常快地执行;如果您的启动需要一整秒,那么减少等待的一种方法是在第一次请求时加载较少的数据。您是否可以加载足够让用户在接下来的四五秒内开始使用您的应用程序?
保留以前的数据。也许应用程序在前一个会话中加载的数据足以让用户继续执行几秒钟。使用这些数据,即使你不得不让用户知道它正在更新,也可以给你足够的时间来刷新应用程序。
给用户一些事情要做。如果在处理完整请求之前绝对不能前进,那么也许可以在请求发生时提供一些有用或有趣的交互。即使在下载数据的过程中显示进度也足够了 - 任何可以防止应用程序在初始阶段都没有做任何事情的东西。
答
这个电话在后台队列:
1.使用GCD,并呼吁dispatch_async
2.创建您自己的NSOperationQueue
并添加NSBlockOperation
它
难道您使用的异步请求? – 2015-03-02 15:18:33
速度将取决于会话中包含的项目数量。如果这导致性能滞后,那么考虑将循环移动到后台线程 – humblePilgrim 2015-03-02 15:21:26