在Objective-C中,如果我有一个只包含类方法的类(没有成员变量或实例方法),我可以在类的头文件(.h)中定义类方法,并跳过创建.m文件吗?
你可以这样做,但基本上不应该这样做。虽然你可以将@implementation放在头文件中,但这是违反惯例的,并且可能会产生意想不到的副作用,就像在C++或其他语言中一样(例如,你无法控制在#include你的头文件之前已经被#include了什么,因此你不能确定你有一个合理的全局命名空间)。
Objective-C的最佳实践是只在头文件中保留声明和文档。由于文档通常非常冗长(如果写得好的话),这已经是你头文件中相当多的内容了 - 在此基础上添加代码就太多了。
还要记住,Objective-C方法(类方法或实例方法)没有内联。这是将代码放在头文件中相对流行的做法之一。当然,你可以将静态函数放在Objective-C头文件中,这样你就可以通过这种方式实现你的代码,但这可能是一种不理想的设计 - 例如,类方法提供了一种命名空间形式,通常明智地利用这种形式。