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 № 1Una 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