Class Referenceを見てて
// ImplicityUnwrapOptional<View>な型を返す関数
func hoge(_ identifier: String!) -> View!
こういう定義の関数がわりと良くあるんですが、nilをunwrapしようとすると'nilはunwrapできないぜ'的なランタイムエラーを吐くので、ああ、戻り値がImplicityUnwrapOptional型な関数は絶対値を返すという意味なんだと思ってました。
ところが、とあるAPIが普通にこのエラーで落ちたので、どうしたものかと悩んでいたのですが、対策法を見つけたのでメモします。
// hoge関数が戻り値nilの場合はimplicitryUnwrapでランタイムエラーになる
var hogeView = hoge()
// Optional Chainingでアンラップしてやると、ランタイムエラーの代わりにnilを返す
var hogeView = hoge()?
// hogeViewはnilなので、ここでnilチェックが発生する
ここまで書いておいて
やっぱりImplicityUnwrapOptionalな型を返すと定義している関数がコールしただけでランタイムエラーっていうのは微妙なので、Option型を返すって定義するべきなんじゃないかなぁと思いました。(つまりバグやと思うんですが。毎回こんなん恐れるんだったらOption採用した意味ないしね。)