2008-11-13 27 views
35

Xcode是否支持任何类似于Visual Studio风格#region指令的任意代码折叠?Xcode区域

回答

54

不行,你只能折叠Xcode中各种规定的范围级别的代码。

您可以使用小技巧,让通过功能菜单导航更加简单,虽然。

#pragma mark 

允许您创建一个组,其中标签以下标志将在功能菜单显示。如果标签是连字符,则将分隔符插入到功能菜单中。

此外,在评论下面的标签将在功能菜单显示:

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

显然因为的#pragma标志是不是真的便携,如果您正在构建一个便携式的应用程序,并需要用它来工作一个不会忽略它不理解的#pragma指令的编译器,评论风格标记是一个不错的选择。

+2

C标准说符合实现*必须忽略它不理解的#pragma指令。当然,每一个`#pragma`指令都不是以`STDC`开始的,无论如何都是实现定义的,所以仍然不是那么便于使用。 – dreamlax 2011-12-13 18:59:06

+0

有人绝对应该为自定义代码折叠制作一个XCode插件。这将是非常有用的:) – brimstone 2015-11-26 21:03:39

12

我要下地狱这一点,但这里有云:

在给定文件的顶部,把

#define FOLD 1 

不管你想要去折的东西,如果把它包在一个块像这样:

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

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

+8

这将是一个好主意,但你只能在功能范围内放置一个if语句。您不能将结构,枚举和函数定义包装在if中。 – Chuck 2009-04-04 08:21:25

+48

+1去地狱 – MrJD 2012-04-21 14:39:52

+1

对于大多数不支持代码折叠预处理指令的IDE,另一个+1,因为我认为这是因为他们想要强制我们使用方法而不是折叠,因此+1对于方法分组,-1因为我认为这是因为他们想迫使我们使用类。所以我们甚至:P。请原谅我的无知,如果有的话。 – 2012-09-08 11:47:29

4

这不会在你最需要它的地方工作,就是围绕函数或方法组。

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

和IF(倍)完全是多余的。只需在方法或函数中使用大括号,Xcode就会折叠它们。

-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 
0

放在括号内{}您需要的代码,它会成为一个折叠区。

但你要记住,括号中还定义变量的作用域,所以这段代码不应该将这些括号外使用的变量声明。

3

试试这个方法:

//region title1 
{ 
    //region Subtitl1 
    { 

    } 
    //region Subtitl2 
    { 

    } 
} 

它可以做这样的:

It can do like that :

1

没有对.NET风格的区域支持,能够在同一时间折叠所有的功能是下一个最好的事情。

命令 - 选项 - 转变 - 左箭头 折叠所有。

命令 - 选项 - 转变 - 右箭头 展开所有。

Xcode会记住折叠函数的最后一个状态。