头文件中的类方法实现

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

1
这并不是一种“最佳实践”,但为什么不尝试呢? - user529543
1
你可以这样做,但最好不要。Objective-C并不是C++(幸运的是)。 - user529758
那么,这样做有副作用吗?它会破坏Xcode的方法识别吗?它是否符合ARC标准?这是一种黑客行为吗?苹果公司对此有何评论? - Mr. Smith
1
如果您在头文件中开始实现代码,很可能会出现重复符号的问题。 - Daij-Djan
3
我很喜欢这个问题。我不明白为什么我们需要这么多“只管去做,不要问为什么”的评论。这与从圣经中引用一样毫无意义。 - noelicus
显示剩余5条评论
1个回答

5

可以这样做,但基本上不应该这样做。虽然你可以将@implementation放在头文件中,但这是违反惯例的,并且可能会产生意想不到的副作用,就像在C++或其他语言中一样(例如,你无法控制在#include你的头文件之前已经被#include了什么,因此你不能确定你有一个合理的全局命名空间)。

Objective-C的最佳实践是只在头文件中保留声明和文档。由于文档通常非常冗长(如果写得好的话),这已经是你头文件中相当多的内容了 - 在此基础上添加代码就太多了。

还要记住,Objective-C方法(类方法或实例方法)没有内联。这是将代码放在头文件中相对流行的做法之一。当然,你可以将静态函数放在Objective-C头文件中,这样你就可以通过这种方式实现你的代码,但这可能是一种不理想的设计 - 例如,类方法提供了一种命名空间形式,通常明智地利用这种形式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接