苹果承认iPhone调至1970年1月1日会变砖,原因竟然是……
事情大家都知道了,近日,很多手欠又很有闲的用户将iPhone的日期设置到1970年1月1日(也可能更早),导致手机变成了砖头。受到影响的产品包括64位的iOS 8和iOS 9苹果设备,以及使用A7、A8、A9和A9X处理器的iPad。
苹果官方今天承认了这一点, 并给出了解决方案。 苹果表示,如果你把iPhone、iPad以及iPod的时间设置到1970年5月之前,它将会出现重启失败的问题,也就是我们说的“变砖”。
苹果给出的解决办法是: 可以先将iOS设备拆机并拆出电池,放置10分钟后重新安装;或者在电量充足的情况下,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。
苹果承诺会尽快修复这一bug,但是并没有解释为什么将iPhone设置到1970年5月以前会变砖。不过在YouTube上,一位叫Tom Scott的小伙儿给出了目前来看最靠谱的解释。
变砖可能的原因:整数下溢或代码bug
Tom解释称,1970年1月1日是个特殊的日子。程序员为了更好的计算时间,只好采用整数,所以就将1970年1月1日零点设为0,然后按秒计算后来的时间,包括我们现在电脑和手机、平板电脑等设备上的时间仍在这样计算。
至于为何只在64位处理器的苹果设备上出现这种问题,Tom认为,旧处理器都是32位的,当将它的编程改写成64位的时,可能就会出现bug。他还警告程序员,不要在编写代码时偷懒或耍花招。
而二进制里,当你给64位存储的最大数字上加1时,就可能导致数据重回0,也就是整数溢出;但是,当你从最小数字0上减1时,你永远不会得到负数,就会造成整数下溢。事实上,无论你将时间设置到1970年以前的哪一天,哪怕是公元前,你的iPhone上能设置的最遥远的时间也只能是1970年1月1日00:00。
尽管目前上述存储格式的最新版本已经允许有负数了,但是从iPhone变砖的现实来看,显然苹果还在老的版本上不遗余力,否则,我们哪儿那么多槽呢?世界哪儿那么多欢乐呢?
总之,看了iPhone变砖后想亲自体验一下的iPhone用户还是省省心吧,毕竟已经有了那么多no zuo no die的鲜活案例足以证明他们的天真和愚蠢。
祝你的iPhone身心健康。