从API设计的角度来看,在我看来,在方法签名中使用Implicitly Unwrapped Optional(IUO)只会使方法代码(不必解包)而不是调用者。
以open source code为例:
class func getStationDataWithSuccess(success: ((metaData: NSData!) -> Void)) {
if useLocalStations {
getDataFromFileWithSuccess() { data in
success(metaData: data)
}
} else {
loadDataFromURL(NSURL(string: stationDataURL)!) { data, error in
if let urlData = data {
success(metaData: urlData)
}
}
}
}
我认为metaData在可选的情况下被声明为IUO时没有值,或者是否有理由将此方法参数声明为?
因此,从API设计的角度来看,在我看来,Optional应该总是比IUO更好的做法(基于具体原因,而不是意见)
答案 0 :(得分:0)
就API设计而言,我相信这里接受的答案也会在很大程度上回答您的问题:
In Swift, what does the ! symbol mean in a function signature?
此外,在这里的前几个答案中可以找到一些好的一般用例和隐式展开选项的动机: