0

我正在开发一个聊天客户端。要获取新消息(或发布新消息),我必须执行 GET(或 POST)请求。所有新消息都通过核心数据存储。目前我不知道如何以最佳方式实现它。

我的想法:

  1. 在视图控制器初始化阶段创建后台线程,该线程将定期检查新消息(如果会话处于活动状态 - 时间短,如果不是 - 周期约为 60 秒)。如果有新消息,我们将它们存储在 DB 中并通知委托有新消息要显示。
  2. 朋友建议使用performSelector afterDelay,但我不明白如何在我的应用程序中使用它。
  3. 还有什么?

提前致谢。

4

1 回答 1

1

不要使用performSelector afterDelay. 使用NSTimer要好得多(作为开始下一次下载的触发器)。此外,用于NSOperationQueue管理您的后台任务。为自己创建一个NSOperation可以实例化的自定义,它将完成您的请求过程。当您创建一个新操作来检查新消息时,请检查一个是否已经在进行中(同时进行多个请求是没有意义的)。

其他注意事项:

  1. 确保您考虑与 Core Data 存储相关的线程(将操作回调到主线程并返回结果可能是最简单的,因为结果数据总是相对较小)。
  2. 如果您要发送大量消息并且想要显示恒定状态(就像 Skype 那样,在有人打字时向您显示),您将需要使用套接字来保持连接始终处于活动状态(每次新连接的成本将禁止)。
于 2013-08-25T11:15:22.917 回答