Ios 每秒钟运行一次NSTimer会有多大的负担?

Ios 每秒钟运行一次NSTimer会有多大的负担?,ios,swift,uitableview,nstimer,Ios,Swift,Uitableview,Nstimer,我有一个基于时间戳锁定/解锁的信息表视图 如果我有单元格A、B和C,根据从Firebase提取的时间戳,它们分别在30秒、1分钟和1分钟30内解锁,我需要一种方法来检查这些时间戳以解锁它们,也就是让它们能够选择单元格 我能想到的唯一方法是设置一个每秒运行一次的NSTimer,以检查Post类的数组,该数组将具有timestamp属性和locked属性。当视图加载时,我会检查时间戳并根据时间戳初始设置locked属性,然后NSTimer将每秒运行一次,并将posts时间戳与其“unlock”日期进

我有一个基于时间戳锁定/解锁的信息表视图

如果我有单元格A、B和C,根据从Firebase提取的时间戳,它们分别在30秒、1分钟和1分钟30内解锁,我需要一种方法来检查这些时间戳以解锁它们,也就是让它们能够选择单元格

我能想到的唯一方法是设置一个每秒运行一次的NSTimer,以检查Post类的数组,该数组将具有timestamp属性和locked属性。当视图加载时,我会检查时间戳并根据时间戳初始设置locked属性,然后NSTimer将每秒运行一次,并将posts时间戳与其“unlock”日期进行比较。如果一篇文章准备解锁它的“锁定”变量,它将关闭为“false”,用户将能够点击它

因为我正在用单元格上的图像显示锁定/解锁的内容,所以需要每秒在tableview上重新加载一次,以使锁定的图像保持最新。这听起来很糟糕

有什么好办法吗?或者这样做可以吗?

有几种想法:

  • 根据您描述的场景,tableview不需要每秒重新加载一次。你可能会每秒检查一次计时器的触发,但它只需要在有问题的帖子实际需要解锁时重新加载(看起来大概是每隔30秒一次,一点也不坏)

  • 如果可以计算出需要重新加载的单元格的索引,则可以直接调用
    reloadRows(在IndexPath:[IndexPath],使用animation:UITableViewRowAnimation)
    UITableView
    方法。这将避免更新整个tableview以重新加载一行,如果您由于行重新加载过多而感到不安,则可以稍微改善UX

  • 如果您关心每秒触发的实际计时器,但知道行数有限(特别是如果您列出的只有3行),那么您可以为在适当时间(30秒、1分钟等)触发的每一行创建单独的计时器。但是,每秒触发一个计时器并不是什么大问题,也不会导致任何明显的性能问题

  • 几点想法:

  • 根据您描述的场景,tableview不需要每秒重新加载一次。你可能会每秒检查一次计时器的触发,但它只需要在有问题的帖子实际需要解锁时重新加载(看起来大概是每隔30秒一次,一点也不坏)

  • 如果可以计算出需要重新加载的单元格的索引,则可以直接调用
    reloadRows(在IndexPath:[IndexPath],使用animation:UITableViewRowAnimation)
    UITableView
    方法。这将避免更新整个tableview以重新加载一行,如果您由于行重新加载过多而感到不安,则可以稍微改善UX

  • 如果您关心每秒触发的实际计时器,但知道行数有限(特别是如果您列出的只有3行),那么您可以为在适当时间(30秒、1分钟等)触发的每一行创建单独的计时器。但是,每秒触发一个计时器并不是什么大问题,也不会导致任何明显的性能问题


  • 谢谢。都是好的。关于计时器检查,您也非常正确,实际上不需要重新加载。那会好得多。非常感谢。都是好的。关于计时器检查,您也非常正确,实际上不需要重新加载。那会好得多。