如何使编译器默认为"可空"

fab*_*abb 14 interop objective-c swift objective-c-nullability

从Xcode 6.3开始,Objective-C中的类型可以标记为nullable或者nonnull,这是Apple的博客文章.

问题是,当两者都没有指定时,编译器会将Objective-C代码导入隐式解包到Swift中,例如NSView!.因此,当一个对象实际上 nil时,从Swift访问它时会崩溃.这并没有产生一个编译错误.

由于这非常容易失败,我希望编译器默认采用Objective-C中的所有内容nullable,除非另有指定nonnull,否则是审计区域宏NS_ASSUME_NONNULL_BEGIN / END.怎么能实现呢?

fab*_*abb 0

似乎没有办法添加可空性注释来摆脱隐式解包的选项。

我编写了一个脚本,用于查找所有未注释的标头,这些标头也可以作为构建阶段添加,因此不会忽略任何标头。