Delegateを実装するとき、以下のエラーが出た
Type '通知先' does not conform to protocol 'SomeDelegate'
これは、protocolで定義されたメソッドを実装していないため怒られている。
Swift : Type ‘ViewController’ does not conform to protocol ‘XxxDelegate’ | コンパクトファクトリ
【Swift】delegateを完全克服するためのまとめ - ぬけてるエンジニアの備忘録
を参考にさせていただきました。
なお、実装しなくてもいいようにするには通知元のDelegateを以下のようにする
@objc protocol SomeDelegate {
// こちらは実装しなくてはいけない
func someMethod1(str:String)
// optinalをつけたこちらは実装しなくてもよくなる
optional func someMethod2()
}
optionalになったので、処理を移譲するとき、メソッド名の後ろに?をつけるなどする
// 通知元
// メンバ変数で保持
var delegate: SomeDelegate?
func pressedButton() {
print("button button")
self.delegate?.someMethod2?()
}
コメント