【问题标题】:Is prefix necessary for methods in iOS?iOS中的方法是否需要前缀?
【发布时间】:2014-12-29 22:10:13
【问题描述】:

我对有关是否为方法使用前缀的解释的 Apple 文档感到有些困惑?

Apple Doc Explanation 1:

在命名类、协议、函数、常量和 typedef 结构时使用前缀。命名方法时不要使用前缀;方法存在于定义它们的类创建的名称空间中。另外,不要使用前缀来命名结构的字段

Apple Doc Explanation 2:

如果您正在继承一个大型 Cocoa 框架类(例如 NSViewUIView)并且您希望绝对确定您的私有方法的名称与超类中的名称不同,您可以添加自己的前缀你的私有方法。前缀应尽可能唯一,可能是基于您的公司或项目的前缀,格式为"XX_"。所以如果你的项目叫做Byte Flogger,那么前缀可能是BF_addObject:

【问题讨论】:

  • 前缀从来都不是必需的,它们总是可选的。但是因为在 Objective-C 中没有名称间距,所以最好为任何与您无法控制的代码共享范围的内容添加前缀。例如,类名是全局范围,iOS 中内置的类的子类将与父类共享范围,因此最好使用前缀,以防父类更改为具有与您的子类添加的方法同名的方法.

标签: ios objective-c iphone ios7 methods


【解决方案1】:

这是因为 ObjC 不支持namespaces。相反,您应该使用大写字母前缀(正如您在文档中正确阅读的那样)。您可以阅读this SO 讨论为什么要使用它们。

请注意,Apple 使用两个字母前缀(UI(View)、NS(String) 等)并建议程序员使用 3 个字母前缀。

【讨论】:

    【解决方案2】:

    我认为您应该尽可能使用前缀,这可以成为一种很好的做法,并且您可以通过名称来识别您正在使用的大型软件的哪个部分。

    假设你的程序名称是Byte Flogger,那么你所有的类都应该以:

    开头

    BF 前缀。以BFBaseList 为例,如果您想在将应用提交到 AppStore 时防止被拒绝,最好将您的方法命名为 bfMyMethodName 以便您仍然尊重 CamLCase 命名约定。

    因此,对于图像,您可以将属性命名为 bfContentMode,而不会被 Apple 怀疑使用一个私有 API 功能。

    现在,假设您处理一些模块、核心模块、网络模块等... 如果你的类名是BFCObject,你可以知道你正在使用你程序的核心对象。

    所以没有必要,但不这样做可能会迫使您在提交的最后一刻重构您的代码。在一个时间驱动的项目中,我什至不会冒这个风险。

    【讨论】:

      【解决方案3】:

      对于包含项目相关故事情节/内容的类,不需要前缀。

      但是,如果我们通过扩展示例中给出的几个方法来使用 Apple 类,例如从 UIView 到 MBView,那么我们应该为私有类别中的私有方法添加前缀(在 .m 文件中)。

      【讨论】:

        猜你喜欢
        • 2011-09-22
        • 2010-12-14
        • 1970-01-01
        • 2021-04-10
        • 2013-02-17
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多