NSTimer在几秒钟后停止

时间:2015-08-29 16:53:32

标签: ios xcode swift parse-platform nstimer

我正在制作一个社交媒体应用,并且注册屏幕中的一项功能是检查用户名是否实时拍摄并放置X或检查是否已拍摄(实时再次)。我使用计时器来完成此操作但由于某种原因,计时器在几秒钟后停止。这是怎么回事?有没有更好的方法来做这件事?

array[1,1] = apple

1 个答案:

答案 0 :(得分:5)

不是每秒发送100个请求,而是因为多种原因而不好,您应该在每次用户更改实际用户名时最多发送一个请求。

为什么你当前的解决方案很糟糕:

  • 您发送了太多请求 - 期间
  • 您一次又一次地发送相同请求
  • 你可能因为垃圾邮件而被禁止解析
  • 你造成网络流量太大,假设有人在移动互联网上填写登录表格5-10秒,分心并让应用程序打开1分钟左右,我个人不乐意放弃只有几兆字节。

你能做什么:

  • 在用户对其用户名进行的每次更改后发送请求(使用this question & answer并将其与checkOrX结合使用)
  • 发送新请求后,立即取消之前发送的尚未完成当前请求的请求
  • 等待用户的微小暂停 - 如果他没有输入新字符0.1秒并且只查询服务器
  • 仅在用户尝试提交表单时发送请求
  • 仅在用户关注其他表单元素时发送请求

第一个"解决方案的示例版本"可能看起来像

func viewDidLoad() {
    // ...
    self.username.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
}

func textFieldDidChange(textField: UITextField) {
    if textField == self.username {
        checkOrX()
    }
}