2008-10-11 12 views
28

In Visual Studio, wenn ich eine Klasse definieren, um eine Schnittstelle zu implementieren, z.Gibt es in Xcode eine Tastenkombination, um ein Protokoll zu implementieren?

class MyObject : ISerializable {} 

Ich bin in der Lage auf ISerializable nach rechts klicken, wählen Sie „Schnittstelle implementieren“ aus dem Kontextmenü und sehen Sie 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 etwas wie diese Funktionalität in Xcode auf dem Mac? Ich möchte in der Lage sein, Protokolle auf diese Weise automatisch zu implementieren. Vielleicht mit den optionalen Methoden generiert, aber auskommentiert.

Antwort

6

Ich habe diese Funktion in Xcode nicht gesehen. Aber es scheint, als könnte jemand ein neues Benutzerskript schreiben, das "Place Implementor Defs in der Zwischenablage" heißt und innerhalb von Scripts> Code liegt.

Sie haben das nicht nützlich gefunden.

+10

Wer hat nicht gefunden, was nützlich und warum, und was? – nmr

5

In Xcode gibt es derzeit kein Refactoring. Wenn Sie möchten, geben Sie bitte eine enhancement request ein.

0

Macrumors hatte eine Diskussion darüber auch. Es gibt einen Link zu einigen Apple-Skripten. Ich habe das nicht wirklich versucht.

1

Xcode können Sie pro Protokollverfahren helfen können, sagen Sie ein Protokoll wie dieses:

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

im @implementation Abschnitt Ihrer .m-Datei den Namen der Methode, die Sie beginnen und der ESC-Taste zu schreiben Taste, um die Signatur der Methode/Selektor automatisch zu vervollständigen:

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

Xcode eine vollständige Signatur der @protocol Methode automatisch vervollständigt wird, TAB pres den Code zu bestätigen.

Wenn Sie wirklich begehen OSX/iOS-Entwicklung zu lernen, würde ich Ihnen empfehlen „XCode 3 Unleashed“, ein Buch zu lesen, die mir wirklich geholfen Xcode zu wissen, wie tief, wie ich weiß, VS :)

+1

Sie können es sogar schneller machen, indem Sie einfach '- P (drücken Sie ESC)' (ohne Rückgabetyp - Xcode5 wird immer noch den richtigen Selektor anzeigen). Siehe Development_gems von wwdc Videos ... – liefersfl

22

XCode unterstützt derzeit diese Art der Automatisierung nicht. Aber: eine einfache Möglichkeit, Ihren Code zu bekommen Bootstrap mit einem Protokoll ist auf Option Sie auf die Protokollnamen in der Klassendeklaration

@interface FooAppDelegate : NSObject <NSApplicationDelegate, 
             NSTableViewDelegate> { 

, um schnell die .h-Datei öffnen Sie das Protokoll definieren. Kopieren Sie dann die Methoden, die Sie interessieren, und fügen Sie sie ein. Diese Header sind in der Regel gut kommentiert. Dies hilft bei der Entscheidung, welche Methoden Sie ignorieren können.

+1

Aber Sie beantworten die Frage nicht. Er fragt nach einer Tastenkombination, um sie hinzuzufügen, um das Kopieren/Einfügen zu vermeiden. – lagos

+2

@lagos Ich denke, Clay beantwortet die Frage. Er sagt, die Antwort ist "Nein" und bietet eine Alternative. –

2

Ich weiß, dass dieser Thread ein bisschen alt ist, aber ich fragte mich das gleiche und fand diese Frage.

In meinem Fall definiere ich eine Eigenschaft in der Schnittstelle (. H) und ich möchte es in der Implementierung (. M) synthetisieren. Ich muss auch 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 machen. Es scheint, dass dies immer noch kein Feature in Xcode 4.3.3 ist. Die Funktion ist jedoch in JetBrains' AppCode verfügbar. Ich versuche nur mit dem Versuch, aber es scheint, dass nur eine Eigenschaft oder Methode zu einer Zeit möglich ist, nicht die gesamte Schnittstelle wie Visual Studio.

Verwandte Themen