我正在努力使用Objective-C中的命名协议。例如:
我有一个名为Command的协议。 我有一个抽象类,它实现了Command,它是我具体命令的基类。
我相信可以同时调用协议和基类'Command',但是如果我需要在实现中引用协议,这会引起导入冲突。我也明白,在Objective C中,使用前缀来表示协议是不好的形式。一些示例使用“ing”添加到最后,但在这种情况下没有任何意义。调用抽象类'CommandBase'似乎也是错误的。
那我该如何命名呢?
答案 0 :(得分:24)
我建议在你的情况下,将协议和基类命名为同一个东西并不一定是坏的,因为你的类是协议的主要表达式(例如NSObject
)。
来自Apple的Coding Guidelines for Cocoa: Code Naming Basics:
一些协议将许多不相关的方法分组(而不是创建 几个单独的小协议)。这些协议往往是 与作为主要表达式的类相关联 协议。在这些情况下,惯例是给出协议 与班级同名。这种协议的一个例子是 NSObject协议。此协议将您可以使用的方法分组 查询有关其在类层次结构中的位置的任何对象,以使其成为可能 调用特定方法,并增加或减少其引用 计数。因为NSObject类提供了主要的表达式 这些方法,协议以类命名。
答案 1 :(得分:17)
作者声明:
协议应根据他们对行为进行分组的方式命名:
大多数协议组相关的方法与any无关 尤其是班级。这种类型的协议应该命名为 协议不会与班级混淆。常见的惯例是使用 一个动名词(“...... ing”)形式:
NSLocking - 很好。
NSLock - 可怜(似乎是一个班级的名字)。
一些协议将许多不相关的方法分组(而不是创建 几个单独的小协议)。这些协议往往是 与作为主要表达式的类相关联 协议。在这些情况下,惯例是给出协议 与班级同名。
这种协议的一个例子是NSObject协议。这个 协议组可用于查询任何对象的方法 在类层次结构中的位置,使其调用特定的方法, 并增加或减少其引用计数。因为 NSObject类提供了这些方法的主要表达方式 protocol以类命名。
答案 2 :(得分:-3)
如果您将看到uitableview的预定义协议,NSUrlconnection,那么您将获得protocal的名称,就像UItabaleviewDelegate和NSUrlconnectionDelegate一样。 ........
然后你可以轻松地将哪个代表属于哪个类
所以你可以使用你的classnameDelegate作为协议名称....谢谢