【问题标题】:Is it better to use multiple NSTimers or put all code into one?使用多个 NSTimer 还是将所有代码合二为一更好?
【发布时间】:2013-07-20 16:10:35
【问题描述】:

我在 Xcode4 中工作,在一个项目中,我出于组织目的使用了三个不同的 NSTimer,但我意识到定时器是相同的,除了名称,所以很容易将所有三个定时器合并到一个一。哪个更适合我的项目,三个独立的计时器划分代码,还是一个包含所有代码的计时器?

谢谢!

【问题讨论】:

  • 嗯,定时器没有“代码”,而是在定时器“滴答”时调用方法。您可以轻松地让一个计时器调用一个“主”方法,该方法又调用几个辅助方法,因此各个方法可以保持与它们自然“属于”的类相关联。或三个独立的计时器。什么是最自然的“分工”。 3 个计时器与 1 个计时器的性能/效率差异不值得担心——更多的是代码结构的清晰性。
  • 这读起来更像是一个答案而不是评论,@HotLicks。

标签: cocoa nstimer


【解决方案1】:

如果多个计时器彼此不同步触发,可能会对能源产生重大影响。现代 CPU 尝试尽可能多地休眠,并且允许它们定期休眠一次甚至几毫秒可以显着提高电池寿命。如果您的定时器关闭得很近,但不是在同一时间,那么系统睡眠的机会就会减少。我推荐来自WWDC 2013 的 Session 704(构建高效的 OS X 应用程序)和 Session 712(能源最佳实践),它们详细讨论了这一点以及如何改进代码。 Apple 最近在改进计时器的管理方式和鼓励开发人员更好地将他们的计时器批处理在一起方面投入了大量精力。

这不是增加代码复杂性的理由,@HotLicks 和@GerdK 是正确的,代码简单性通常胜过其他问题,但成本不应被忽视,尤其是在现代 CPU 和高频计时器上。

请注意,有一些新的 NSTimer 选项可以帮助您获得批处理计时器的好处,而无需在最新的操作系统中实际重构您的代码。有关更多信息,请参阅上述视频(仍处于保密协议下,因此我无法在此处详细介绍)。

【讨论】:

    【解决方案2】:

    无论哪种方法使您的代码更易于理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      相关资源
      最近更新 更多