2012-12-09 56 views
2

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

+1

不是“最佳实践”,但为什么不尝试呢? – 2012-12-09 10:58:04

+1

你可以,但你最好不要。 Objective-C不是C++(幸运的是)。 – 2012-12-09 11:05:20

+0

那么,他们这样做的副作用呢?它是否破坏了Xcode的方法识别,它是ARC友好的,它是一种黑客吗?苹果有没有说过这件事? –

回答

3

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

Objective-C中的最佳实践是只保留头文件中的声明以及文档。由于文档通常非常冗长(如果编写的很好),那么在您的头文件中已经有相当一部分内容 - 在其上添加代码将会太多。

请记住,Objective-C方法没有内联,无论是类还是实例。这是在C/C++中将代码放在头文件中的一个比较流行的做法。你当然可以在你的Objective-C头文件中加入静态函数,这样你就可以用这种方式实现你的代码,但这可能是一个不合需要的设计 - 例如,类方法提供了一种名称空间的形式, 。