41 Stimmen

Unterstützt Xcode Regionen?

Unterstützt Xcode irgendetwas, das mit Visual Studio vergleichbar ist? #region Direktiven für beliebige Codefaltung?

57voto

Jason Coco Punkte 77369

Nein, Sie können Code nur auf verschiedenen definierten Scoping-Ebenen in Xcode falten.

Mit kleinen Tricks können Sie sich die Navigation durch das Funktionsmenü jedoch erleichtern.

#pragma mark

Ermöglicht es Ihnen, eine Gruppierung zu erstellen, bei der die folgende Markierung im Funktionsmenü angezeigt wird. Wenn die Bezeichnung ein Bindestrich ist, wird ein Trennzeichen in das Funktionsmenü eingefügt.

Außerdem werden die folgenden Bezeichnungen in Kommentaren im Funktionsmenü angezeigt:

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

Da die #pragma-Markierung nicht wirklich portabel ist, ist die kommentarähnliche Markierung eine gute Alternative, wenn Sie eine portable Anwendung erstellen und diese mit einem Compiler arbeiten muss, der #pragma-Direktiven, die er nicht versteht, nicht einfach ignoriert.

2 Stimmen

Der C-Standard besagt, dass eine konforme Implementierung muss ignorieren. #pragma Direktiven, die es nicht versteht. Natürlich ist jede #pragma Richtlinie, die nicht mit STDC ist ohnehin implementierungsabhängig, also nicht wirklich portabel.

0 Stimmen

Jemand sollte unbedingt ein XCode-Plugin für die benutzerdefinierte Code-Faltung entwickeln. Das wäre sehr nützlich :)

16voto

willc2 Punkte 37581

Ich werde dafür in die Hölle kommen, aber es geht los:

Am Anfang einer bestimmten Datei setzen Sie

#define FOLD 1

Wo immer Sie etwas falten wollen, wickeln Sie es in einen if-Block ein, etwa so:

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

So können Sie es außer Sichtweite wegklappen.

9 Stimmen

Das wäre eine gute Idee, aber Sie können eine if-Anweisung nur innerhalb eines Funktionsbereichs einfügen. Sie können Struct-, Enum- und Funktionsdefinitionen nicht in eine if-Anweisung einschließen.

1 Stimmen

Eine weitere +1 für die meisten IDEs nicht unterstützen preprocessing Richtlinie für Code-Faltung, -1 für ich denke, dies ist, weil sie uns für die Verwendung von Methoden statt Faltung zwingen wollen, +1 für dies wäre toll für Methode Gruppierung, -1 für ich denke, dies ist, weil sie uns zwingen wollen, Klassen zu verwenden. Wir sind also quitt :P. Entschuldigen Sie meine Unwissenheit, falls es welche gibt.

1 Stimmen

Warum sollte man sich die Mühe machen, sie zu definieren? Warum nicht einfach if (true)?

4voto

cdespinosa Punkte 20293

Das funktioniert nicht an der Stelle, an der Sie es am meisten brauchen, nämlich bei Gruppen von Funktionen oder Methoden.

Es kann innerhalb 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, obwohl es beim Schreiben von großem numerischem oder grafiklastigem Code helfen könnte, Dinge zu gruppieren.

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

4 Stimmen

Es ist erstaunlich, dass so viele Menschen nicht wissen, dass man auch ohne Verzweigung einen Anwendungsbereich einführen kann.

2voto

Versuchen Sie es auf diese Weise:

//region title1
{
    //region Subtitl1
    {

    }
    //region Subtitl2
    {

    }
}

So kann es gehen:

It can do like that :

1voto

Carter Medlin Punkte 11077

Ohne Unterstützung für Regionen im .Net-Stil ist die Möglichkeit, alle Funktionen gleichzeitig zu komprimieren, die nächstbeste Lösung.

command - option - shift - left arrow alles zum Einsturz zu bringen.

command - option - shift - right arrow alle zu erweitern.

Xcode merkt sich den letzten Zustand von zugeklappten Funktionen.

0 Stimmen

Hinweis: Damit Xcode sich Ihre Faltung merkt, stellen Sie in Xcode 8 sicher, dass Ihr Projektformat auf Xcode 8.0-compatible .

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