在Cocoa API中可能返回nil的某些属性被声明为隐式解包的选项是否是一个错误?

时间:2014-08-02 13:34:03

标签: cocoa swift

在使用NSRunningApplication数组(包含所有正在运行的应用程序)时,我发现我的应用程序崩溃是因为直接访问bundleIdentifier属性而没有先检查nil。如果属性被声明为正确的可选项,那么这可以完全避免在没有阅读文档的情况下完全避免的错误,因为类型系统不允许我在不首先展开它的情况下使用它。

此属性在swift标题中记录并声明如下:

/* Indicates the CFBundleIdentifier of the application, 
   or nil if the application does not have an Info.plist. */
var bundleIdentifier: String! { get }

是否有任何理由不将此属性声明为正确的可选项?

1 个答案:

答案 0 :(得分:0)

正如Martin R所说,将返回类型定义为隐式展开的可选项是Apple的设计决策。想象一下,每次调用Cocoa API都会得到一个可选项。你只需要像使用Objective-C一样小心,只要没有Swift的更新框架。