Swift delegateについて

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?()
}

コメント

タイトルとURLをコピーしました