Xcode 是否支持任何类似于 Visual Studio 样式#region
指令的任意代码折叠?
8 回答
不,您只能在 Xcode 中定义的各种范围级别上折叠代码。
不过,您可以使用一些小技巧来更轻松地通过功能菜单进行导航。
#pragma mark
允许您创建一个分组,其中标记后面的标签将显示在功能菜单中。如果标签是连字符,则在功能菜单中插入分隔符。
此外,注释中的以下标签将显示在功能菜单中:
// MARK:
// TODO:
// FIXME:
// !!!:
// ???:
显然,由于#pragma 标记并不是真正可移植的,如果您正在构建一个可移植应用程序并且需要它与一个编译器一起工作,而该编译器不只是忽略它不理解的#pragma 指令,那么注释样式标记是一个不错的选择选择。
我会为此而下地狱,但这里有:
在给定文件的顶部,放
#define FOLD 1
无论你想在哪里折叠东西,把它包裹在一个 if 块中,如下所示:
if(FOLD) {
// your code to hide
// more code
}
这会让你把它折叠起来看不见。
这在您最想要的地方不起作用,即围绕函数或方法组。
它在没有内部条件或循环的长线性方法中可能很有用,但这种方法在一般 Mac OS X UI 代码中并不常见,但如果您正在编写一些大型数字或图形处理代码,它可以帮助分组事物。
而 if(fold) 完全是多余的。只需在方法或函数中使用大括号,Xcode 就会折叠它们。
试试这种方式:
//region title1
{
//region Subtitl1
{
}
//region Subtitl2
{
}
}
它可以这样做:
在不支持 .Net 样式区域的情况下,能够同时折叠所有功能是下一个最好的选择。
command- option- shift-left arrow 全部崩溃。
command- option- shift-right arrow 展开全部。
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