Поддерживает ли Xcode что-то похожее на директивы стиля #region
для Visual Studio для произвольного сгибания кода?
Области Xcode
Ответ 1
Нет, вы можете только сбрасывать код на разных определенных уровнях охвата в Xcode.
Вы можете использовать небольшие трюки, чтобы упростить навигацию через меню функций.
#pragma mark
Позволяет создать группу, в которой будет отображаться метка следующего знака в меню функций. Если метка является дефисом, разделитель вставляется в меню функций.
Кроме того, в меню функций появятся следующие метки комментариев:
// MARK:
// TODO:
// FIXME:
// !!!:
// ???:
Очевидно, поскольку #pragma mark не очень портативен, если вы создаете портативное приложение и нуждаетесь в нем для работы с компилятором, который не просто игнорирует директивы #pragma, которые он не понимает, то комментарий в стиле комментария является достойной альтернативой.
Ответ 2
Я иду в ад для этого, но здесь идет:
В верхней части данного файла поместите
#define FOLD 1
Если вы хотите что-то сложить, оберните его в блок if следующим образом:
if(FOLD) {
// your code to hide
// more code
}
Это позволит вам сбросить карты с поля зрения.
Ответ 3
Это не будет работать там, где вы хотите больше всего, то есть вокруг групп функций или методов.
Это может быть полезно в длинном линейном методе без внутренних условных выражений или циклов, но такие методы не являются общими в общем коде Mac OS X UI, хотя, если вы пишете какой-то большой числовой или графический хрустальный код, может помочь сгруппировать вещи.
И if (fold) полностью избыточно. Просто используйте фигурные скобки внутри метода или функции, и Xcode будет складывать их.
Ответ 4
Попробуйте следующим образом:
//region title1
{
//region Subtitl1
{
}
//region Subtitl2
{
}
}
Он может сделать так:
Ответ 5
Без поддержки регионов стиля .Net, возможность одновременного свернуть все ваши функции - это следующая лучшая вещь.
command - option - shift - left arrow чтобы свернуть все.
command - option - shift - right arrow для расширения всех.
Xcode будет помнить последнее состояние свернутых функций.
Ответ 6
Поместите свой желаемый код внутри скобок {}, и он станет точкой сгибания.
Но вы должны иметь в виду, что скобки также определяют область переменных, поэтому этот код не должен иметь объявлений переменных, которые будут использоваться вне этих скобок.
Ответ 7
Одно приятное решение, которое я только что нашел:
Поместите свой проект в одно большое пространство имен. Закройте и откройте это пространство имен для отдельных разделов исходного файла:
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