Xcode поддерживает регионы?

Поддерживает ли Xcode что-то похожее на стиль Visual Studio #region директивы для произвольного свертывания кода?

9 ответов

Решение

Нет, вы можете сложить код только на различных определенных уровнях областей действия в XCode.

Вы можете использовать маленькие хитрости, чтобы упростить навигацию по меню функций.

#pragma mark

Позволяет создать группировку, в которой метка после метки будет отображаться в меню функций. Если метка является дефисом, разделитель вставляется в меню функций.

Также в меню функций появятся следующие метки в комментариях:

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

Очевидно, что так как знак #pragma на самом деле не переносим, ​​если вы создаете переносимое приложение и вам нужно, чтобы оно работало с компилятором, который не просто игнорирует директивы #pragma, которые он не понимает, отметка в стиле комментария является достойной альтернатива.

Я иду в ад за это, но здесь идет:

В верхней части данного файла поместите

#define FOLD 1

Везде, где вы хотите что-то сложить, оберните это в блок if следующим образом:

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

Это позволит вам сложить его из виду.

Это не сработает в том месте, где вы хотите больше всего, то есть вокруг групп функций или методов.

Он может быть полезен в длинном линейном методе без внутренних условных выражений или циклов, но такие методы не распространены в общем коде пользовательского интерфейса Mac OS X, хотя, если вы пишете какой-то большой числовой или графический код, это может помочь сгруппировать вещи.

И if(fold) совершенно лишний. Просто используйте фигурные скобки внутри метода или функции, и Xcode свернет их.

Попробуйте так:

//region title1
{
    //region Subtitl1
    {

    }
    //region Subtitl2
    {

    }
}

Это может сделать так:

Это может сделать так

Полезная опция в XCode 12 (возможно, раньше) - это опция в настройках "Лента складывания кода".

Когда вы его проверяете, исходный код выглядит так

Когда вы наводите указатель мыши на эту ленту, вы получаете складываемые области на основе скобок, как это

Когда вы нажимаете на ленту, она складывает область скобки, как это

Это не регионы в Visual Studio, где их можно разместить где угодно, но они достаточно хороши, чтобы привести в порядок файлы кода.

Чтобы ответить на ваш вопрос... Нет. И это сводит меня с ума.

Если у вас есть возможность/возможность, вы можете использовать для этого AppCode . Я использую его уже несколько лет, и он обычно превосходит Xcode во многих областях.

Также я специально использую AppCode из-за этих функций:

  • Возможность использования регионов
  • Поиск классов, текста и использований НАМНОГО быстрее.
  • Рефакторинг также выполняется быстрее.
  • Более чистый и настраиваемый пользовательский интерфейс.
  • Вкладки обрабатываются (на мой взгляд) намного лучше, чем в Xcode.
  • СКЛАДНОЙ. На самом деле вы можете изменить желаемый уровень сворачивания. Почему Apple решила, что не должно быть быстрых клавиш для сворачивания расширений, мне непонятно. И складывать ленты? Точно Эппл? Да, они красивые, и все, но большинство профессионалов используют горячие клавиши для всего.
  • Улучшенная интеграция с GIT.
  • Поддержка оперативных обновлений в SwiftUI.
  • Если вы используете другие IDE Jetbrains, такие как PyCharm или Android Studio, пользовательский интерфейс точно такой же.

Некоторые недостатки AppCode:

  • Некоторые вещи, которые работают в Xcode, не поддерживаются
    • визуальный #colorLiteral(). При их использовании они не показывают палитру цветов.
    • Нет поддержки раскадровки. Раздражает необходимость открывать Xcode. Если вы пишете свой пользовательский интерфейс в коде, это спорный вопрос.
  • Редактировать файлы .plist не так приятно. Выполнимо, но не красиво.
  • Первоначальная индексация может занять некоторое время.
  • Расходы. Но я бы сказал, что экономия времени только на навигации компенсирует это.

Довольно много для простого вопроса, но я думаю, что хорошо иметь альтернативы.

Без поддержки регионов в стиле.Net следующее: возможность свернуть все ваши функции одновременно.

Команда-опция-Shift-стрелка влево, чтобы свернуть все.

Команда-опция-Shift-стрелка вправо, чтобы развернуть все.

Xcode запомнит последнее состояние свернутых функций.

Поместите нужный код в скобки { }, и он станет зоной свертывания.

Но вы должны иметь в виду, что скобки также определяют область видимости переменных, поэтому в этом коде не должно быть объявлений переменных, которые будут использоваться вне этих скобок.

Одно хорошее решение, которое я только что нашел:

Поместите ваш проект в одно большое пространство имен. Закройте и снова откройте это пространство имен для отдельных разделов вашего исходного файла:

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
Другие вопросы по тегам