【问题标题】: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 应该排在所有其他人之前吗?

  • 他们必须在场吗?
  • 可以添加新标记吗?他们为什么会这样?是什么原因造成的?
  • 删除标记有什么害处吗?有人愿意吗?

【问题讨论】:

标签: objective-c xcode pragma


【解决方案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 marks 创建的部分

        【讨论】:

          【解决方案6】:

          在搜索 doc 以指出编译器如何指示编译指示时,我发现这个 NSHipster article 做得很好。

          我希望你会喜欢阅读

          【讨论】:

            【解决方案7】:
            #pragma mark - NSSecureCoding
            

            “pragma”的主要目的是供开发者参考。

            您可以在成千上万行代码中轻松找到方法/函数。

            Xcode 11+:

            顶部的标记线

            // MARK: - Properties
            

            顶部和底部的标记线

            // MARK: - Properties - 
            

            标记线仅在底部

            // MARK: Properties -
            

            【讨论】:

            • 所以我可以删除该行吗?它浪费了我的大脑空间。
            • 删除 #pragma-mark 不会影响代码的任何功能,但您的代码可能会失去可读性。如果你真的不想要,你可以删除它。
            猜你喜欢
            • 2010-12-27
            • 2022-01-04
            • 1970-01-01
            • 2012-04-28
            • 2011-03-29
            • 1970-01-01
            • 2014-03-14
            • 1970-01-01
            • 2019-09-17
            相关资源
            最近更新 更多