Skip to content

Latest commit

 

History

History
28 lines (18 loc) · 1.23 KB

4.5 多灾多难的隐式可选值.md

File metadata and controls

28 lines (18 loc) · 1.23 KB

可选值

4.5多灾多难的隐式可选值

定义:无论什么时候使用都会自动强制解包的可选值。(就是看起来像肯定有值, 但你后面写也没啥问题,不太理解这句话直接看下面的场景和坑就行。)

出现场景:

swift调用OC里面有返回值的方法,其OC方法返回值就是隐式可选值。 假设OC里Person类有一个属性name是NSString类型的. 这里的name在OC里面可能是nil

NSString *string = [Person alloc]init].name;

/// 在swift中去调用时  我们这样写,编译器不会报错 但是当saySomething为nil的时候就会崩溃

Person().name.count ❌

/// 我们需要自己在name属性后主动添加?防止因为隐式可选值引起的崩溃。

Person().name?.count ✅
填坑:

前一段时间在上线项目中有一个崩溃。 就是因为调用OC方法返回了一个nil,而代码层面返回值是一个没有说明是必选还是可选(看起来是必选 你写?也没有问题。) 没太注意,我就当成了必选。 结果上线后发现OC方法可能会返回nil。 项目一阵崩溃。 扎心了。。 希望各位同学看到后能踩在我的尸体上前行😂。。