苹果承认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用户还是省省心吧,毕竟已经有了那么做no zuo no die的鲜活案例足以证明他们的能动性。


祝你的iPhone身心健康。

随意打赏

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