新 IUO 详解
今年 WWDC 上提了一下 Swift 废除 IUO 类型的事情,给了我一个机会去更加深入了解 IUO 相关的内容,实际上 IUO 的行为在 Swift 3 里就增强限制了,为了这一次的修改作了铺垫,这次在 Swift 4.2 里终于彻底去掉了 IUO 类型。
我在写这篇 What’s New in Swift 的时候找了很多资料,但找不到一篇文章把这件事情说的很清楚,一方面是社区对于这件事情的关心也不是很大,另一方面是这个修改在 Swift 3 里已经做了铺垫,对于现有代码的破坏性很小。而且官方提案里也是写得很含糊,写得最好的是,虽然前面那篇 WWDC 的专题文章已经讲过了大概的概念,但我后来看了别人的一些文章,自己也思考了一段时间之后,觉得还是可以单独拎出来写篇文章,用更简单易懂的方式来讲清楚这个修改。