Open4

Swift Naming Delegates

ykwsykws

ガイドラインとしては、 UIKit の慣習と済ませているが、具体的な理由は以下

メソッドシグネチャの第1引数でカスタムビュー自身のオブジェクトを渡すように設計しておくと、画面内で複数配置しているようなケースで、どのビューから応答が来たか判別できる。UIKitのクラスでは大抵こうなっている。

https://raimon49.github.io/2015/07/12/swift-cocoa-delegation-pattern.html

ykwsykws

ただし、それは UIKit での話で、 SwiftUI では不要という判断もある

基本的には UIKit などの命名規則と合わせて、Delegate の呼び出し元の名前に動詞を続ける命名にしています。ただし、第一引数で self を渡すのはやめています*8。

*8: UIKit では UI 操作などのために外部に提供するインターフェイスとなるが、SwiftUI では ObservableObject のように別の形が提供されているので基本的には不要なはず。むしろ SwiftUI のスコープ外から意図しない操作を可能にしてクラッシュさせる恐れもある。ここではそれを回避したいため。

https://techlife.cookpad.com/entry/2021/01/18/kaimono-swift-ui#f-32cdbe3e

ykwsykws

SwiftUI.View は struct で実装し、これは値型なので、 self を渡しても、参照型でできていたインスタンス比較はできないので、そういった観点からも不要