#pragma 标记的意义是啥?为啥我们需要#pragma 标记?
Posted
技术标签:
【中文标题】#pragma 标记的意义是啥?为啥我们需要#pragma 标记?【英文标题】:What is the significance of #pragma marks? Why do we need #pragma marks?#pragma 标记的意义是什么?为什么我们需要#pragma 标记? 【发布时间】:2011-10-14 19:01:35 【问题描述】:Xcode 中#pragma
标记的目的是什么?他们在.m
文件中的位置重要吗?一些#pragma
应该排在所有其他人之前吗?
【问题讨论】:
查看链接:cocoasamurai.blogspot.com/2006/09/… 我个人不喜欢它们。说真的,你想一直想着你必须把一个方法放在哪里?还有更重要的事情要保持井井有条,比如注意单一职责原则 对于快速语言#Pragma 标记将不起作用。使用#MARK 或#FIXME 或#TODO 检查此链接以获取更多信息***.com/a/33040068/1753005 ***.com/a/36953187/443530 【参考方案1】:#pragma mark
指令显示在 Xcode 的菜单中,用于直接访问方法。它们对程序完全没有影响。
例如,在 Xcode 4 中使用它会使这些项目直接出现在跳转栏中。
有一个特殊的pragma mark -
创建一条线。
【讨论】:
感谢您的回答——您能否发布一个更新的答案,显示新 XCode 中的杂注标记是什么样子(在该菜单中或它们现在的任何位置)? 是否有 Python 等价物? @EdwardFalk 它是 IDE 特定的,所以它真的取决于你的 IDE/文本编辑器 我的 GCC 编译器给出了警告,foo.h:52:0: warning: ignoring #pragma mark [-Wunknown-pragmas] #pragma mark -,这不是致命的。所以gcc可能不知道'-'。【参考方案2】:#pragma mark
用于标记方法组,以便您可以轻松地从跳转栏找到和检测方法。当您的代码文件达到大约 1000 行并且您想通过跳转框的类别快速找到方法时,它可能会为您提供帮助。
在一个长程序中,很难记住和找到方法名。所以 pragma mark 允许您根据它们所做的工作对方法进行分类。例如,您为 Table View Protocol Methods、AlertView Methods、Init Methods、Declaration 等标记了一些标签。
#pragma mark
是 XCode 的工具,但它对您的代码没有影响。它只是有助于在编码时更容易找到方法。
【讨论】:
【参考方案3】:简单来说,我们可以说#pragma mark -
用于对方法进行分类,因此您可以轻松找到您的方法。这对于长期项目非常有用。
【讨论】:
【参考方案4】:只是添加我正在寻找的信息:pragma mark
是特定于 Xcode 的,因此如果您处理在不同 IDE 中打开的 C++ 项目,它在那里没有任何影响。例如,在 Qt Creator 中,它不会为方法添加类别,也不会生成任何警告/错误。
编辑
#pragma
是来自 C 编程语言的预处理指令。它的目的是为编译器指定与实现相关的信息——也就是说,每个编译器都可以根据需要选择解释该指令。也就是说,它被认为是一个不会改变/影响代码本身的扩展。所以编译器不妨忽略它。
Xcode 是一个利用#pragma
并以自己特定方式使用它的IDE。关键是,#pragma
不是 Xcode 甚至是 Objective-C 特定的。
【讨论】:
【参考方案5】:当我们有一个大/冗长的类说超过 100 行代码时,我们无法在监视器屏幕上看到所有内容,因此我们无法看到我们类的概述(也称为文档项)。有时我们想查看我们班级的概述;它的所有方法、常量、属性等一目了然。您可以在 XCode 中按 Ctrl+6 来查看您的课程概览。您将获得一种弹出式窗口,即 Jump Bar。
默认情况下,此跳转栏没有任何存储桶/部分。这只是一长串清单。 (虽然我们可以在跳转栏出现时开始输入,它会在跳转栏项目中搜索)。这里需要pragma mark
如果您想在跳转栏中创建部分,则可以使用带有相关描述的编译指示标记。现在参考有问题的快照。 'View lifeCycle' 和 'A section dedicated ..' 是由pragma mark
s 创建的部分
【讨论】:
【参考方案6】:在搜索 doc 以指出编译器如何指示编译指示时,我发现这个 NSHipster article 做得很好。
我希望你会喜欢阅读
【讨论】:
【参考方案7】:#pragma mark - NSSecureCoding
“pragma”的主要目的是供开发者参考。
您可以在成千上万行代码中轻松找到方法/函数。
Xcode 11+:
顶部的标记线
// MARK: - Properties
顶部和底部的标记线
// MARK: - Properties -
标记线仅在底部
// MARK: Properties -
【讨论】:
所以我可以删除该行吗?它浪费了我的大脑空间。 删除 #pragma-mark 不会影响代码的任何功能,但您的代码可能会失去可读性。如果你真的不想要,你可以删除它。以上是关于#pragma 标记的意义是啥?为啥我们需要#pragma 标记?的主要内容,如果未能解决你的问题,请参考以下文章
#pragma execution_character_set的意义
Android Studio 中的 #pragma 标记等效项
SQLite pragma 命令中的 Android Studio 标记错误,<pragma value> 应为“ON”