标头中的类方法实现



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

您可以,但基本上不应该。虽然你可以把你的@实现放在一个头中,但这是反约定的,它可能会产生意想不到的副作用,就像在C++或其他语言中一样(例如,你无法控制在你的头被#include之前会被#included包含什么,所以你不能确定你有一个健全的全局命名空间)。

Objective-C中的最佳实践是在头文件中只保留声明和文档。由于文档通常都很冗长(如果写得好的话),所以头中已经有相当多的内容了——在上面添加代码太多了。

还要记住,Objective-C方法没有内联,无论是类还是实例。这就是将代码放入头文件是C/C++中相对流行的做法的主要原因之一。当然,你可以把静态函数放在Objective-C头文件中,这样你就可以用这种方式实现代码,但这可能是一种不可取的设计——例如,类方法提供了一种名称空间形式,这通常是明智的。

最新更新