Поддерживает ли Xcode регионы?
поддерживает ли Xcode что-либо похожее на стиль Visual Studio #region
директивы для произвольного складывания код?
7 ответов
нет, вы можете только сложить код на различных определенных уровнях области в Xcode.
вы можете использовать маленькие трюки, чтобы облегчить навигацию через меню функций.
#pragma mark
позволяет создать группировку, в которой в меню функций будет отображаться следующая метка. Если метка является дефисом, в меню функций вставляется разделитель.
кроме того, в функции будут отображаться следующие метки в комментариях меню:
// MARK:
// TODO:
// FIXME:
// !!!:
// ???:
очевидно, что, поскольку # pragma mark на самом деле не переносится, если вы создаете портативное приложение и нуждаетесь в нем для работы с компилятором, который не просто игнорирует директивы #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
{
}
}
это может сделать так:
без поддержки регионов .Net style возможность свернуть все ваши функции одновременно является следующей лучшей вещью.
команда-опции-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