項目種別
補足
登場した回
伝えた回
分類
記載日
Mar 21, 2023 3:51 PM
関連資料
勉強会の中では難しく考えすぎて辿り着けませんでしたが、次のプロパティーラッパーを使うことで、オプショナル型を保ちつつ、値に nil
が割り当てられているときは assert
で通知する機能を実現できそうでした。
@propertyWrapper
struct AssertiveAccess<Value> {
private var value: Value?
init(wrappedValue: Value?) {
value = wrappedValue
}
var wrappedValue: Value? {
get {
assert(value != nil, "No value assigned.")
return value
}
set {
value = newValue
}
}
}
たとえばこれと @IBOutlet
を併用することで、手違いがなければ nil
が入らないはずなのに、間違って nil
になってしまっていたときに、デバッグビルドに限って実行時エラーを起こすことが可能になります。
あとは、オプショナルに関する機能を使って NULL 安全なコードを記載しておくことで、リリースビルドではそれに従った、実行時エラーになりにくいコードを実行できそうです。