目标C中的协议命名

时间:2011-09-20 10:39:56

标签: objective-c protocols

我正在努力使用Objective-C中的命名协议。例如:

我有一个名为Command的协议。 我有一个抽象类,它实现了Command,它是我具体命令的基类。

我相信可以同时调用协议和基类'Command',但是如果我需要在实现中引用协议,这会引起导入冲突。我也明白,在Objective C中,使用前缀来表示协议是不好的形式。一些示例使用“ing”添加到最后,但在这种情况下没有任何意义。调用抽象类'CommandBase'似乎也是错误的。

那我该如何命名呢?

3 个答案:

答案 0 :(得分:24)

我建议在你的情况下,将协议和基类命名为同一个东西并不一定是坏的,因为你的类是协议的主要表达式(例如NSObject)。

来自Apple的Coding Guidelines for Cocoa: Code Naming Basics

  

一些协议将许多不相关的方法分组(而不是创建   几个单独的小协议)。这些协议往往是   与作为主要表达式的类相关联   协议。在这些情况下,惯例是给出协议   与班级同名。这种协议的一个例子是   NSObject协议。此协议将您可以使用的方法分组   查询有关其在类层次结构中的位置的任何对象,以使其成为可能   调用特定方法,并增加或减少其引用   计数。因为NSObject类提供了主要的表达式   这些方法,协议以类命名。

答案 1 :(得分:17)

Code Naming Basics.

部分中,Apple的Cocoa编码指南涵盖了所有内容

作者声明:

  

协议应根据他们对行为进行分组的方式命名:

     

大多数协议组相关的方法与any无关   尤其是班级。这种类型的协议应该命名为   协议不会与班级混淆。常见的惯例是使用   一个动名词(“...... ing”)形式:

     

NSLocking - 很好。

     

NSLock - 可怜(似乎是一个班级的名字)。

     

一些协议将许多不相关的方法分组(而不是创建   几个单独的小协议)。这些协议往往是   与作为主要表达式的类相关联   协议。在这些情况下,惯例是给出协议   与班级同名。

     

这种协议的一个例子是NSObject协议。这个   协议组可用于查询任何对象的方法   在类层次结构中的位置,使其调用特定的方法,   并增加或减少其引用计数。因为   NSObject类提供了这些方法的主要表达方式   protocol以类命名。

答案 2 :(得分:-3)

如果您将看到uitableview的预定义协议,NSUrlconnection,那么您将获得protocal的名称,就像UItabaleviewDelegate和NSUrlconnectionDelegate一样。 ........

然后你可以轻松地将哪个代表属于哪个类

所以你可以使用你的classnameDelegate作为协议名称....谢谢