标头中的类方法实现

Mr.*_*ith 5 objective-c

在Objective-C中,如果我有一个仅包含类方法的类(没有成员变量或实例方法),我可以在该类的头文件(.h)中定义类方法,而跳过创建.m文件吗?

Wad*_*kis 5

可以,但你根本不应该。虽然您可以将@implementation放在标头中,但它是一种反约定,并且可能具有意想不到的副作用,与C ++或其他语言相同(例如,您无法控制标头包含在#中的内容。包括在内,因此无法确定您拥有健全的全局名称空间)。

Objective-C中的最佳实践是仅将声明和文档一起保留在头文件中。由于文档通常很冗长(如果写得不错),因此标题中已经有相当多的内容-在此之上添加代码会太多。

还请记住,没有类或实例的Objective-C方法的内联。这是在C / C ++中将代码放入头文件中的一种较普遍的做法,这就是主要原因之一。当然,您可以将静态函数放在Objective-C头文件中,因此您可以以这种方式实现代码,但这可能是不受欢迎的设计-例如,类方法提供了一种命名空间形式,通常可以利用命名空间。