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