Факультативный метод протокола в Cocoapod - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть несколько протокольных методов, которые разработчики могут вызывать в качестве делегатов при установке моего cocoapod.Однако в настоящее время все они должны быть реализованы.Как мне сделать их необязательными?Вот фрагмент кода:

В коде моего cocoapod:

public protocol ServiceDelegate: NSObjectProtocol {
    func didDetectDoubleTapGesture()
}

//To fire the protocol method...
delegate?.didDetectDoubleTapGesture()

Со стороны разработчика:

extension ViewController: ServiceDelegate {

    func didDetectDoubleTapGesture() {
        print("didDetectDoubleTapGesture")
    }

}

В настоящее время это работает, но я хочу сделать этодля разработчика необязательно реализовывать метод делегата didDetectDoubleTapGesture ().До сих пор я пробовал '@objc' и '@optional'.Какой самый чистый способ сделать это?

1 Ответ

0 голосов
/ 15 февраля 2019
If you want to use optional methods, you must mark your protocol with @objc attribute:

@objc protocol ServiceDelegate: NSObjectProtocol {
   @objc optional func didDetectDoubleTapGesture()
}

//To fire the protocol method...
delegate?.didDetectDoubleTapGesture()

extension ViewController: ServiceDelegate {

//no error
}

************************** or **********************
public protocol ServiceDelegate: NSObjectProtocol {
    func didDetectDoubleTapGesture()
}

//To fire the protocol method...
delegate?.didDetectDoubleTapGesture()

extension ServiceDelegate {
    func didDetectDoubleTapGesture()
}

extension ViewController: ServiceDelegate {

//no error
}
...