Ich benutze Fusuma Kokos Pod-Framework. Ich habe jedoch festgestellt, dass sie ein objektives C-Protokoll haben, obwohl das ganze Projekt in "swift" geschrieben wurde.Ziel C-Protokoll in Swift
@objc public protocol FusumaDelegate: class {
func fusumaImageSelected(image: UIImage)
optional func fusumaDismissedWithImage(image: UIImage)
func fusumaVideoCompleted(withFileURL fileURL: NSURL)
func fusumaCameraRollUnauthorized()
optional func fusumaClosed()
}
Ich möchte eine weitere Funktion im Protokoll hinzufügen. Allerdings bin ich immer diese warining
Methode kein Mitglied eines @objc Protokoll, da der Typ des Parameters nicht in Objective-C dargestellt werden kann
Ich denke an das Entfernen der @objc sein kann vor dem Protokoll aber dann heißt es ich muss optionale func entfernen. Ich habe nichts dagegen, sie zu normalen Funktionen zu ändern, aber ich möchte herausfinden, was ich beachten sollte, wenn ich @objc entfernen
Die Funktion, die ich hinzufügen möchte, ist eine andere Delegat-Funktion für die vorherige VC. Ich habe 3 VCs in diesem Fall. Die zweite, die diese ist, ergreift die Daten von der dritten VC, nachdem sie entlassen wurde. Dann mag ich die folgende Delegatfunktion hinzuzufügen VC1, damit beginnen, die Daten zu
extension FusumaViewController: VC3Delegate {
func readyToUploadPost(postUpload: PostUpload) {
delegate_?.readyToUploadPost_Fusuma(postUpload)
}
wahrscheinlich, dass sie die dynamischen Fähigkeiten von Objective-C benötigen. Das kannst du nicht in Swift machen. –
Wie sieht die Funktion aus, die Sie hinzufügen möchten? –
@MikeTaverne, sehen Sie sich bitte die aktualisierte Frage an, die Ihre Frage beantwortet. Ich habe versucht, das optionale func zu entfernen und das objC zu entfernen, aber es gibt mir einen Fehler, der besagt, dass Methode nicht öffentlich deklariert werden kann, weil ihr Parameter einen internen Typ verwendet. Also habe ich einfach ein komplett separates Protokoll erstellt, um damit umzugehen. Nicht sicher, ob das der richtige Weg ist. Scheint wie ein Hack – user172902