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