苹果承认iPhone调至1970年1月1日会变砖,原因竟然是……

虎嗅网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  
苹果承认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身心健康。

随意打赏

提交建议
微信扫一扫,分享给好友吧。