Überschreibt dies die Methode oder nicht?

7

Ich war kürzlich gezwungen, auf Swift 3.0 zu aktualisieren und es scheint, als ob die Konvertierung von Xcode keine gute Arbeit geleistet hätte. Zum Glück kann ich die meisten Probleme manuell lösen, allerdings hat man mich etwas verwirrt.

Diese Zeile, die die Methode canBecomeFirstResponder in uiController überschrieben hat, funktionierte vor dem Upgrade auf Swift 3.0:

%Vor%

Allerdings gibt es jetzt den Fehler zurück:

  

Methode überschreibt keine Methode aus ihrer Oberklasse.

Das Entfernen des override Bits scheint es jedoch nicht zu beheben, da es einen anderen Fehler verursacht, der dem vorherigen zu widersprechen scheint:

  

Methode 'canBecomeFirstResponder ()' mit Objective-C-Selektor 'canBecomFirstResponder' steht in Konflikt mit Getter für 'canBecomeFirstResponder' aus der Oberklasse 'UIResponder' mit demselben Objective-C-Selektor

Tritt tatsächlich eine Überschreibung auf? Warum gibt mir Xcode gemischte Nachrichten?

Als Referenz habe ich diese Frage angeschaut und obwohl es sehr ähnlich ist, handelt es sich um eine Klasse, und hier geht es um eine Methode. Um sicherzugehen, habe ich versucht, die Lösung für diese Frage zu verwenden, und es hat weitere Probleme verursacht und die gleichen Fehler verursacht.

    
Vemonus 28.09.2016, 20:53
quelle

2 Antworten

22

canBecomeFirstResponder wurde von einer Methode in Swift 2.2 in eine Eigenschaft in Swift 3.0 geändert. Dies bedeutet, dass Sie Ihren Code ändern müssen, um ihn als Eigenschaft anstelle einer Methode zu überschreiben.

%Vor%     
rob mayoff 28.09.2016, 21:04
quelle
2

Schnelles Tutorial, um selbst herauszufinden:

  • Markieren / Auswählen / Markieren canBecomeFirstResponder
  • Drücken Sie ⌘C
  • Drücken Sie ⇧⌘0 (Null nicht O), um das Dokumentationsfenster zu erhalten.
  • Drücken Sie ⌘V
  • Drücken Sie (Zurück)

Jetzt sehen Sie die Deklaration

%Vor%

Siehst du den Unterschied?

    
vadian 28.09.2016 21:02
quelle

Tags und Links