gpt4 book ai didi

ios - NSTimer 未正确执行

转载 作者:行者123 更新时间:2023-11-28 12:44:20 24 4
gpt4 key购买 nike

我正在开发一款需要大量用户输入的应用。正因为如此,我正在尝试构建一个不允许用户在至少 10 秒内发布更多信息的功能。这将有助于减少垃圾邮件发送者/巨魔/等。本质上,当用户想要报告某事时,我的应用程序会测量用户与最近的其他报告位置之间的距离。如果他们距离超过 200 米并且在过去 10 秒内没有报告,那么他们可以自由发布。这是完成此操作的代码:

if( distance > 200 && canPost){
MainMap.addAnnotation(pointAnnotation)
canPost = false
sendTheData(String(locationManager.location?.coordinate.longitude), latitude: String(locationManager.location?.coordinate.latitude), time: getTime(), userId: "admin")
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: #selector(MapViewController.postDelayTimer), userInfo: nil, repeats: false)
myTimer.fire()


}else if(distance < 200 && canPost){
let alertController = UIAlertController(title: "Whoa There!", message: "tOO clOSE!", preferredStyle: .Alert)
let defaultAction = UIKit.UIAlertAction(title: "OK", style: .Default, handler: nil)
alertController.addAction(defaultAction)
self.presentViewController(alertController, animated: true, completion: nil)


}

对于其他不同的实例依此类推。从定时器 postDelayTimer 调用的函数是这样的:

func postDelayTimer() {
canPost = true
}

非常简单,但显然我在这里遗漏了一些东西。有人有想法吗?谢谢大家!

我预计会发生的情况是用户在立即发帖后无法再次发帖,而是可以连续发帖。就好像 bool canPost 始终保持为真。

最佳答案

您的代码是:

    let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: #selector(MapViewController.postDelayTimer), userInfo: nil, repeats: false)
myTimer.fire()

第二行不正确,删除。您不想手动启动计时器。您想等待计时器在 10 秒后自行触发。

关于ios - NSTimer 未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38560638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com