在 Xcode 中,如何禁止添加 "MARK:" 部分菜单?

In Xcode, How do I Suppress "MARK:" part of menu addition?

在Objective C中,当使用

// MARK: Line In Sand

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

最近我从 Apple 下载了一个示例项目 Swift (vs ObjC) "ViewControllerPreview" // MARK: Line In Sand 只显示 "Line In Sand"(没有 "MARK") 使用上述标记注释样式时。他们怎么做到的!?这只是一项基本改进,只适用于 Swift 吗?

如果您在 Objective-C,请使用此语法:

#pragma mark Line In Sand

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

#pragma mark - Hack

// MARK: HACK

这将显示为:

在Swift中,你只会得到// MARK,它被当作pragma mark。

// MARK: Something

Xcode 10 现在处理 Objective C 和 Swift 对

的使用
// MARK: - Line In Sand

同样地,这个问题和答案最终因 Apple 更新而变得毫无意义。

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

事实证明 Swift 中的预处理器对

// MARK: 

语法,而 Objective C 预处理器看到这一点并且不允许特殊处理。 Apple 可以通过从菜单中省略 "MARK:" 来缓解这种情况,就像在 #pragma 版本中所做的那样,但没有乐趣。

并且在相关说明中,事实证明 Swift(不是 ObjC)预处理器也知道如何自动添加分隔线,因此:

// MARK: - Line In Sand

不仅会生成分隔线,还会生成 'markless' 菜单项...但仅在 Swift.

在 Xcode 8.3 中,Apple 最终修复了 // MARK: 在 Objective C 中标记代码段的约定,因此它不再在菜单中显示单词 "MARK"。

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

与Xcode8.3

// MARK: - Line In Sand

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