在Xcode中,我如何抑制" MARK:"菜单的一部分添加?

时间:2016-03-21 16:47:40

标签: ios xcode swift pragma

在Objective C中,使用时

// MARK: Line In Sand

默认项目将生成一个菜单项,其中包含" MARK:"在其中,或换句话说:

Line In Sand showing MARK

就在最近,我在Swift中下载了一个示例项目(vs ObjC)" ViewControllerPreview"来自Apple和// MARK:Line In Sand只展示了#34; Line In Sand" (否#34; MARK")使用上述标记评论样式时。他们是怎么做到的!?除了Swift之外,这只是一个基本的改进吗?

Mark not in menu!

4 个答案:

答案 0 :(得分:2)

在Objective-C中,您可以通过两种不同的方式制作这样的标记:

#pragma mark - Hack

// MARK: HACK

这将是这样的:

mark

在Swift中,你只能得到// MARK,它被视为一个pragma标记。

// MARK: Something

Swift mark

答案 1 :(得分:0)

如果你在Objective-C中,请使用以下语法:

#pragma mark Line In Sand

答案 2 :(得分:0)

Xcode 10现在处理Objective C和Swift使用

// MARK: - Line In Sand
同样如此,这个问题和答案终于被苹果更新所取代。

(以下留给社区的原始答案的命运)

事实证明,Swift中的预处理器为

提供特殊限制
// MARK: 

语法,而Objective C预处理器看到了这一点并且不允许特殊处理。 Apple可以通过省略" MARK来减轻这种情况:"从菜单开始就像#pragma版本一样,但没有欢乐。

在相关的说明中,事实证明Swift(不是ObjC)预处理器也知道如何自动添加分频线,所以:

// MARK: - Line In Sand

不仅会生成一个分隔线,而且还会产生无标记的分隔线。菜单项也是......但仅限于Swift。

Swift preprocessor cleans up 'MARK' where as ObjC does not

答案 3 :(得分:0)

在Xcode 8.3中,Apple最终修改了// MARK:约定,用于标记Objective C中的代码段,因此它不再在菜单中显示“MARK”字样。

目标C #pragma mark -与其他代码标记机制不一致,例如// ???:// !!!:// FIXME:等。事实上// MARK:在Swift中完全实现并且在ObjC中实现了一半,这在Xcode本身中是不一致的,直到Xcode在ObjC的编辑器中修复了// MARK:的实现。

使用Xcode 8.3

// MARK: - Line In Sand

在Objective C中正常工作,不再在菜单中显示“MARK”工件。