メソッドの引数がオプショナルの場合
AとBを受けとりA+Bをして返すメソッドを考えます。
メソッドの定義自体はA?とB?となっており、nilが入って来る可能性があるので
どちらかの引数にnilが入ってきた場合はエラーとして呼び出し元に返してやる必要性がある。
ここでXcodeの補完機能に流れを任せビルドしてしまうと強制アンラップが発生してしまい
アプリが落ちてしまうことになる。
落ちてしまう例
func hoge(A: Int?, B: Int?) -> Int? {
return A! + B!
}
上記の書き方だとreturn A! + B!でnilが入っていた場合に落ちてしまいます。
落ちない例
nilが入ってきた場合にguard letで早期にエラーとしてnilをreturnします。
よくその変数を使うタイミングでnilチェックをしている人がいる。アホくさ。
func hoge(A: Int?, B: Int?) -> Int? {
guard let _A = A else { return nil }
guard let _B = B else { return nil }
return _A + _B
}
まとめ
nilは早期にチェックするべき!!!