Xcode是否支持区域?

时间:2008-11-13 22:04:07

标签: objective-c xcode code-folding

Xcode是否支持任何类似于Visual Studio样式#region指令的任意代码折叠?

8 个答案:

答案 0 :(得分:54)

不,您只能在Xcode中的各种定义的范围级别上折叠代码。

但是,您可以通过功能菜单更轻松地使用小技巧进行导航。

#pragma mark

允许您创建一个分组,其中标记后面的标记将显示在功能菜单中。如果标签是连字符,则会在功能菜单中插入分隔符。

此外,注释中的以下标签将显示在功能菜单中:

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

显然,由于#pragma mark不是真正可移植的,如果你正在构建一个可移植的应用程序并且需要它与编译器一起工作,而编译器不仅忽略它不理解的#pragma指令,那么注释样式标记是一个不错的选择。

答案 1 :(得分:14)

我会为此而下地狱,但这里是:

在给定文件的顶部,输入

#define FOLD 1

无论你想折叠什么东西,都要将它包装在if块中,如下所示:

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

这会让你把它折叠在视线之外。

答案 2 :(得分:4)

这不适用于您最想要的地方,即功能或方法组。

它可能在一个没有内部条件或循环的长线性方法中很有用,但是这种方法在一般的Mac OS X UI代码中并不常见,不过如果你正在编写一些大的数字或图形处理代码它可以帮助分组。

if(fold)完全是多余的。只需在方法或函数中使用大括号,Xcode就可以折叠它们。

答案 3 :(得分:2)

尝试这种方式:

//region title1
{
    //region Subtitl1
    {

    }
    //region Subtitl2
    {

    }
}

它可以这样做:

It can do like that :

答案 4 :(得分:1)

如果不支持.Net样式区域,能够同时折叠所有功能是最好的选择。

command - 选项 - shift - 左箭头 崩溃了。

command - 选项 - shift - 右箭头 扩大所有。

Xcode将记住折叠函数的最后状态。

答案 5 :(得分:0)

将您想要的代码放在方括号{}中,它将成为折叠区。

但是你必须记住,括号也定义了变量范围,所以这段代码不应该有变量声明,这些声明将在这些括号之外使用。

答案 6 :(得分:0)

XCode 12中的一个有用选项(可能在之前)是首选项“代码折叠功能区”中的一个选项

Code folding ribbon

检查时,源代码如下

Ribbon in code

当您将鼠标悬停在该功能区上时,您将获得基于方括号的可折叠区域,例如

Foldable ribbon

单击功能区时,它会折叠括号区域,就像这样

Folded ribbon

它不是Visual Studio中的区域,您可以在任意位置将它们放置在任何地方,但是它们足以整理代码文件。

答案 7 :(得分:-3)

我刚发现的一个很好的解决方案:

将您的项目放入一个大的命名空间。 关闭并重新打开源文件的各个部分的此命名空间:

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