【问题标题】:Call a function with Timer at specific date在特定日期使用 Timer 调用函数
【发布时间】:2020-04-15 15:57:27
【问题描述】:

我需要在午夜前 5 分钟调用一个函数。

仅当用户在该时间段内位于包含UICollectionViewUIView 中时才会调用该函数。

我需要这个collectionView到reloadData() 午夜前5分钟

我想过使用NotificationCenter.default.addObserver观察者

如果您想使用NotificationCenter,在午夜前 5 分钟收到通知的最佳方式是什么?

您认为使用计时器而不是观察者会更好吗?

其中哪一个更方便应用性能?

谢谢大家的帮助

【问题讨论】:

  • 如果您的应用没有运行,这些都不可能。与其在午夜前 5 分钟做某事,不如检测用户在那之后第一次使用您的应用程序,然后再做。明显是一样的
  • @Alexander- 恢复 Monica 应用程序正在运行,因为只有当用户位于包含集合视图的 uiview 前面时,我才需要重新加载集合视图......用户当前正在与应用程序交互
  • 啊,好吧。这回答了你的问题了吗? hackingwithswift.com/example-code/system/…
  • @Alexander-ReinstateMonica 完美.. 工作!!再次感谢!
  • 您应该写下自己的答案并将其标记为已接受。或者更好的是,找到您的问题的副本并将您的问题作为副本关闭。你不是第一个问这个的人:p

标签: ios swift uicollectionview nstimer nsnotificationcenter


【解决方案1】:

阅读 Alexander - Reinstate Monica 的建议后,我找到了使用为特定日期编程的计时器解决问题的方法

let date = Date().addingTimeInterval(5)
let timer = Timer(fireAt: date, interval: 0, target: self, selector: #selector(runCode), userInfo: nil, repeats: false)
RunLoop.main.add(timer, forMode: .common)

解决方案在这里有很好的解释https://www.hackingwithswift.com/example-code/system/how-to-run-code-at-a-specific-time

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多