在Objective C中,使用时
// MARK: Line In Sand
默认项目将生成一个菜单项,其中包含" MARK:"在其中,或换句话说:
就在最近,我在Swift中下载了一个示例项目(vs ObjC)" ViewControllerPreview"来自Apple和// MARK:Line In Sand只展示了#34; Line In Sand" (否#34; MARK")使用上述标记评论样式时。他们是怎么做到的!?除了Swift之外,这只是一个基本的改进吗?
答案 0 :(得分:2)
在Objective-C中,您可以通过两种不同的方式制作这样的标记:
#pragma mark - Hack
// MARK: HACK
这将是这样的:
在Swift中,你只能得到// MARK
,它被视为一个pragma标记。
// MARK: Something
答案 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。
答案 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”工件。