/ / L'implementazione del protocollo predefinito causa errori "non conformi al protocollo": protocolli ios, swift, swift, orientati al protocollo

L'implementazione del protocollo predefinito causa errori "non conformi al protocollo": protocolli ios, swift, swift, orientati al protocollo

Sto cercando di aggiungere un'implementazione predefinita a uno dei miei metodi delegati. Tuttavia, dopo aver aggiunto l'implementazione predefinita e rimosso il metodo dalla classe che implementa il protocollo, ottengo does not conform to protocol errore. Funziona in un parco giochi.

protocol NavigationDelegate: NSObjectProtocol {
func didSetToolbarVisible(_ isVisible: Bool)
}
extension NavigationDelegate {
func didSetToolbarVisible(_ isVisible: Bool) {
print("Default implementation")
}
}
class MyViewController: NavigationDelegate {
// "does not conform to protocol" error
}

Cosa mi manca?

risposte:

2 per risposta № 1

Una classe non è conforme a NSObjectProtocol per impostazione predefinita, ciò causa l'errore.

Modificare

protocol NavigationDelegate: NSObjectProtocol

a

protocol NavigationDelegate: class

2 per risposta № 2

Il tuo NavigationDelegate utilizza un protocollo di base di NSObjectProtocol. Ciò significa che tutto ciò che è conforme a NavigationDelegate deve anche conformarsi a NSObjectProtocol. Modifica la dichiarazione della tua classe come segue: class MyViewController: NSObject, NavigationDelegate.


0 per risposta № 3

Risolto! Mio NavigationDelegate e la sua estensione era in un bersaglio diverso da quello che MyViewController appartiene a. Semplicemente spostando l'estensione sullo stesso obiettivo funzionava.

Spero che questo aiuti qualcuno in futuro