Objective-C类扩展头 - 用于什么?

use*_*976 16 xcode objective-c

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

Ana*_*ile 23

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

扩展用于向您不希望公开的类接口添加内容,因此无法放入公共类声明标头.

当扩展仅由类实现本身使用时,将使用您熟悉的实现的同一文件中的扩展名.

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

你可以认为它是私有的框架而不是私有的类.

  • +1你可以认为它是私有的框架而不是私有的类. (3认同)

ale*_*oot 9

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

在我看来,这是一个非常好的补充(在单元测试中测试私有方法的机会)到Objective-C,这是你现在用Java中的JUnit做不到的事情.