Open4
Swift Naming Delegates
When creating custom delegate methods, an unnamed first parameter should be the delegate source. (UIKit contains numerous examples of this.)
ガイドラインとしては、 UIKit の慣習と済ませているが、具体的な理由は以下
メソッドシグネチャの第1引数でカスタムビュー自身のオブジェクトを渡すように設計しておくと、画面内で複数配置しているようなケースで、どのビューから応答が来たか判別できる。UIKitのクラスでは大抵こうなっている。
ただし、それは UIKit での話で、 SwiftUI では不要という判断もある
基本的には UIKit などの命名規則と合わせて、Delegate の呼び出し元の名前に動詞を続ける命名にしています。ただし、第一引数で self を渡すのはやめています*8。
*8: UIKit では UI 操作などのために外部に提供するインターフェイスとなるが、SwiftUI では ObservableObject のように別の形が提供されているので基本的には不要なはず。むしろ SwiftUI のスコープ外から意図しない操作を可能にしてクラッシュさせる恐れもある。ここではそれを回避したいため。
SwiftUI.View は struct
で実装し、これは値型なので、 self
を渡しても、参照型でできていたインスタンス比較はできないので、そういった観点からも不要