Ich lerne Objective-C im Moment und habe über optionale Methoden in Protokolle. Mein Hintergrund ist C# und kann ein Protokoll als etwas sehen, das einer C# -Schnittstelle ähnlich ist.Echte Welt Beispiele für @optional Protokoll Methoden
Wenn eine C# -Schnittstelle einen Vertrag darstellt, sagen Sie durch Werbung für eine Schnittstelle, dass Sie die definierten Methoden implementieren werden.
In diesem Sinne bin ich verwirrt, warum Sie jemals eine optionale Methode definieren müssten. Das ist kein Bock oder ein Versuch, Objective-C zu verringern, ich liebe Objective-C. Ich möchte einfach die Vorteile dieser optionalen Methoden verstehen, um ein besseres Verständnis der Sprache zu erlangen.
Ich würde es wirklich schätzen, wenn jemand einige reale Szenarien (mit Beispielcode) bereitstellen könnte, wo optionale Methoden nützlich sind.
Ich glaube, ich bin es jetzt bekommen. Eine C# -Schnittstelle ist nur eine Facette eines Objective-C-Protokolls. Sie können ein Protokoll als Vertrag verwenden, aber diese optionalen Methoden bilden eine Liste von optionalen Delegaten, auf die ein Objekt auch antworten kann. Das ist wirklich interessant. – kim3er
+1 für die Verwendung eines Protokolls zur Dokumentation von Delegiertenfunktionen –
Ich stimme @Tom vollkommen zu. Vor Objective-C 2.0 wurden Delegatmethoden normalerweise in einer Kategorie in NSObject deklariert, um zu vermeiden, dass eine Klasse, die ein Delegat sein möchte, alle Methoden implementieren muss. Optionale Methoden in Protokollen sind eine viel sauberere Lösung, die nicht viele Methoden auf NSObject anwendet und Methodenkollisionen vermeidet. Wenn nur Java über optionale Schnittstellenmethoden verfügte, wäre es nicht nötig, Dinge wie MouseAdapter zu erben. Mit solchen Klassen sind in der Regel die wenigen Male, die ich Single-Verehrung verflucht habe ... :-) –