16

我熟悉类主实现文件中的 Objective-C 类扩展,但对新的 Xcode 4.4“一个 Objective-C 类扩展头”文件模板的用途感到好奇?

4

2 回答 2

23

类扩展必须在主@implementation块中实现,但声明可以在任何地方。

扩展用于向类接口添加一些您不想公开的内容,因此不能放入公共类声明头中。

当扩展仅由类实现本身使用时,使用您熟悉的实现的同一文件中声明扩展。

在开发框架时,在单独的标头(即模板的用途)中声明扩展非常有用。扩展头不会是一组公共头的一部分,但会被框架的多个实现文件在内部使用。

您可以将其视为框架私有而不是类私有

于 2012-08-11T09:16:24.577 回答
9

另一个原因是类扩展头文件在您使用单元测试来测试您的类的情况下很有用,将类扩展放在单独的头文件中允许您将包含私有方法的头导入需要的类的实现中那些私有方法和你用来测试类的单元测试文件......

在我看来,这是对 Objective-C 的一个很好的补充(在单元测试中测试私有方法的机会),这是目前 Java 中的 JUnit 无法做到的。

于 2012-08-11T09:30:08.083 回答