我正在尝试设计一个实时事件发生的系统,我想将它们与时钟同步。 [NSDate date]
通常没问题,但用户可以更改它并欺骗系统。我只需要一个时钟,我可以从中获取相对时间(例如 64 位计数器)- 我不需要绝对时间(或一天中的时间等)。
是否有这样的 API 我可以使用?
编辑:我还想补充一点,这个时钟需要在应用程序的 session 期间保持不变。
最佳答案
iPhone 上最好的单调递增数字是 mach_absolute_time()
,它是自上次重启以来的 CPU 滴答计数。如果您出于任何原因想要在几秒钟内获得它,可以使用 CACurrentMediaTime()
轻松获取它。
使用它来创建“始终递增”非常简单。首次启动时,将当前值存储在您喜欢的任何位置。当您退出时,并定期保存该值的偏移量。重新启动时,检查当前值;如果它小于您之前的基准值,请替换您的基准值(已重启)。
当然,所有这些都可以通过删除您的应用程序来清除,除非您在服务器上存储了一些东西。
请注意,这不能用作强大的安全措施。无法阻止授权用户伪造请求。因此,根据您所说的“欺骗系统”的含义,它可能不是一个可以解决的问题。您能做的最好的事情就是不断努力寻找黑客并处理它们。
关于objective-c - iOS中是否有一个可以使用但用户无法更改的时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413616/