2008-11-13 15 views
35

Unterstützt Xcode etwas, das dem Visual Studio-Stil ähnelt #region Direktiven für willkürlichen Code-Faltung?Xcode-Regionen

Antwort

54

Nein, Sie können Code nur auf verschiedenen definierten Bereichsgrenzen in Xcode falten.

Sie können jedoch mit kleinen Tricks die Navigation über das Funktionsmenü erleichtern.

Ermöglicht Ihnen, eine Gruppierung zu erstellen, bei der die Label-Folgemarke im Funktionsmenü angezeigt wird. Wenn das Label ein Bindestrich ist, wird ein Trennzeichen in das Funktionsmenü eingefügt.

Auch die folgenden Labels in den Kommentaren wird im Funktionsmenü angezeigt:

// MARK: 
// TODO: 
// FIXME: 
// !!!: 
// ???: 

Offensichtlich seit Pragma Marke nicht wirklich tragbar ist, wenn Sie eine portable Anwendung Gebäude sind und brauchen es für die Arbeit mit ein Compiler, der nicht ignoriert #pragma-Direktiven, die er nicht versteht, ist die Kommentar-Stil-Marke eine gute Alternative.

+2

Der C-Standard besagt, dass eine konforme Implementierung * # Pragma-Anweisungen ignorieren muss, die sie nicht versteht. Natürlich ist jede "# pragma" -Richtlinie, die nicht mit "STDC" beginnt, sowieso implementierungsdefiniert, also immer noch nicht portierbar. – dreamlax

+0

Jemand sollte auf jeden Fall ein XCode-Plugin für die benutzerdefinierte Code-Faltung machen. Das wäre sehr nützlich :) – brimstone

12

ich dafür in die Hölle werde aber hier geht:

An der Spitze einer bestimmten Datei, setzen

#define FOLD 1 

Wo auch immer Sie etwas falten wollen, wickeln Sie es in ein Block, wenn wie so :

if(FOLD) { 
// your code to hide 
// more code 
} 

Damit können Sie es weg außer Sicht falten.

+8

Es wäre eine gute Idee, aber Sie können nur eine if-Anweisung in einen Funktionsumfang setzen. Sie können Struktur-, Aufzählungs- und Funktionsdefinitionen in einem if nicht umbrechen. – Chuck

+48

+1 für die Hölle – MrJD

+1

Eine weitere +1 für die meisten IDEs nicht unterstützt Preprocessing-Richtlinie für Code-Faltung, -1 für ich denke, das ist, weil sie uns für die Verwendung der Methode statt Faltung zwingen wollen, +1 für das wäre genial für method grouping, -1 für ich denke das ist, weil sie uns zwingen wollen, Klassen zu verwenden. So sind wir sogar: P. Entschuldige meine Unwissenheit, wenn es welche gibt. –

4

Das funktioniert nicht an der Stelle, an der Sie es am meisten wollen, dh um Gruppen von Funktionen oder Methoden.

Es kann in einer langen, linearen Methode ohne interne Bedingungen oder Schleifen nützlich sein, aber solche Methoden sind im allgemeinen Mac OS X UI-Code nicht üblich, wenn Sie einen großen numerischen oder Grafik-Crunching-Code schreiben Es könnte helfen, Dinge zu gruppieren.

Und das if (falten) ist völlig überflüssig. Verwenden Sie einfach die Klammern innerhalb einer Methode oder Funktion und Xcode wird sie falten.

+4

Es ist überraschend, dass so viele Leute nicht wissen, dass Sie Bereich ohne Verzweigung einführen können. – dreamlax

-3

Eine nette Lösung, die ich gerade gefunden habe:

Setzen Sie Ihr Projekt in einen großen Namensraum. Schließen und öffnen Sie diesen Namensraum für die einzelnen Abschnitte der Quelldatei:

namespace myproj { // members of class MyClassA 

void MyClassA::dosomething() 
{ 
} 

void MyClassA::dosomethingelse() 
{ 
} 

} // members of class MyClassA 
namespace myproj { // members of MyClassB 

void MyClassB::dosomething() 
{ 
} 

void MyClassB::dosomethingelse() 
{ 
} 

} // members of MyClassB 
+1

Diese Lösung, wenn überhaupt, würde nur für C++ funktionieren, da Objective-C Namespaces nicht unterstützt – HairOfTheDog

+0

Lol ................... – Jamil

0

Setzen Sie den gewünschten Code in Klammern {}, und es wird eine Faltungszone geworden.

Aber Sie müssen daran denken, dass eckige Klammern auch den Gültigkeitsbereich der Variablen definieren, daher sollte dieser Code keine Variablendeklarationen haben, die außerhalb dieser Klammern verwendet werden.

3

Versuchen Sie, diese Art und Weise:

//region title1 
{ 
    //region Subtitl1 
    { 

    } 
    //region Subtitl2 
    { 

    } 
} 

Es kann wie das tun:

It can do like that :

+0

nein, das ist wirklich nicht t Arbeit – user884248

1

Ohne Unterstützung für .Net Stil Regionen, in der Lage zu sein zugleich alle Funktionen zum Einsturz ist das nächst Beste.

Befehl - Option - Verschiebung - Pfeil links alle zum Einsturz.

Befehl - Option - Verschiebung - Pfeil nach rechts alle zu erweitern.

Xcode merkt sich den letzten Zustand der kollabierten Funktionen.

+0

NB: in Xcode 8, Xcode achten Sie auf Ihre Faltung, stellen Sie sicher, dass Ihr Projekt-Format auf Xcode 8.0-kompatibel eingestellt ist. – Cemen