29 Stimmen

Gibt es eine Tastenkombination in Xcode, um ein Protokoll zu implementieren?

Wenn ich in Visual Studio eine Klasse definiere, die eine Schnittstelle implementiert, z. B.

class MyObject : ISerializable {}

Ich kann mit der rechten Maustaste auf ISerializable klicken und die Option " Schnittstelle implementieren "aus dem Kontextmenü und sehe, dass die entsprechenden Methoden in meiner Klassendefinition erscheinen.

class MyObject : ISerializable {
    #region ISerializable Members
    public void GetObjectData(SerializationInfo info, 
                StreamingContext context)
    {
        throw new NotImplementedException();
    }
    #endregion
}

Gibt es so etwas wie diese Funktionalität in Xcode auf dem Mac? Ich würde gerne Protokolle automatisch auf diese Weise implementieren können. Vielleicht mit den optionalen Methoden generiert, aber auskommentiert.

22voto

Clay Punkte 1139

XCode unterstützt diese Art der Automatisierung derzeit nicht. Aber: ein einfacher Weg, um Ihren Code mit einem Protokoll zu booten, ist ein Optionsklick auf den Protokollnamen in Ihrer Klassendeklaration

@interface FooAppDelegate : NSObject <NSApplicationDelegate, 
                                      NSTableViewDelegate> {

um schnell die .h-Datei zu öffnen, die das Protokoll definiert. Kopieren Sie von dort die Methoden, die Sie interessieren, und fügen Sie sie ein. Diese Header sind in der Regel gut kommentiert, was bei der Bestimmung der Methoden hilft, die Sie getrost ignorieren können.

6voto

David Grant Punkte 3426

Ich habe diese Funktion in Xcode nicht gesehen. Aber es scheint, als ob jemand ein neues Benutzerskript mit dem Namen "Place Implementor Defs on Clipboard" schreiben könnte, das sich innerhalb von Scripts > Code befindet.

Sie fanden dies nicht nützlich.

5voto

Chris Hanson Punkte 53324

In Xcode gibt es derzeit kein solches Refactoring.

Wenn Sie es wünschen, reichen Sie bitte eine Erweiterungsantrag .

2voto

Randy Eppinger Punkte 974

Ich weiß, dass dieser Thread schon ein bisschen alt ist, aber ich habe mich dasselbe gefragt und diese Frage gefunden.

In meinem Fall definiere ich eine Eigenschaft in der Schnittstelle (.h) und möchte sie in der Implementierung (.m) synthetisieren. Außerdem muss ich Methoden implementieren, die in der Schnittstelle definiert sind. Ja, Xcode hilft, wie andere bereits erwähnt haben, aber moderne IDEs bieten diese Produktivitätsverbesserungen für Dinge, die wir häufig tun. Es scheint, dass dies immer noch keine Funktion in Xcode 4.3.3 ist. Die Funktion ist jedoch verfügbar in JetBrains' AppCode . Ich spiele nur mit dem Versuch, aber es scheint nur möglich zu sein, eine Eigenschaft oder Methode zu einem Zeitpunkt, nicht die gesamte Schnittstelle wie Visual Studio.

1voto

bithavoc Punkte 1449

Xcode kann Ihnen pro Protokollmethode helfen, sagen wir, Sie haben ein Protokoll wie dieses:

@protocol PosterousWebsitesDelegate <NSObject>
- (void)PosterousWebsitesLoadSuccess:(PosterousWebsites*)websites;
@end

im @implementation-Abschnitt Ihrer .m-Datei können Sie den Namen der Methode eingeben und die ESC-Taste drücken, um die Signatur der Methode/des Selektors automatisch zu vervollständigen:

-(void)Poste (...press ESC...)

Xcode füllt automatisch eine vollständige Signatur der @protocol-Methode aus, drücken Sie TAB, um den Code zu bestätigen.

Wenn Sie sich wirklich verpflichten, OSX/iOS Entwicklung zu lernen, würde ich Ihnen empfehlen, "XCode 3 Unleashed" zu lesen, ein Buch, das mir wirklich geholfen hat, Xcode so tief zu kennen, wie ich VS kenne :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X