init(uiImage: UIImage) { if let cgImage = uiImage.cgImage { self.init(cgImage: cgImage) } else if let ciImage = uiImage.ciImage { ... self.init(...) } else { guard uiImage.size == .zero else { fatalError(...) } self.init(width: 0, height: 0, pixels: []) } }
} else if let ciImage = uiImage.ciImage { ... self.init(...)
の部分が watchOS では CoreImage が使えない関係でエラーになってしまうので除去したいけど #if
でここだけ除去できないのでelse { }
の中イニシャライザにしようとすると型で区別できない→特殊なラベル名を持ったイニシャライザを作ることになるけど、 UIImage
がサイズ .zero
のときにしか呼んではいけないとかわかりづらすぎるif/else if/else
の条件分岐の条件は括り出しようがない