我熟悉类主实现文件中的Objective-C类扩展,但对新的Xcode 4.4“Objective-C类扩展头”文件模板的用途感到好奇吗?
答案 0 :(得分:22)
类扩展必须在主@implementation
块中实现,但声明可以在任何地方。
Extensions用于向您不希望公开的类接口添加内容,因此无法放入公共类声明头。
当扩展仅由类实现本身使用时,将使用您熟悉的实现的同一文件中的扩展名。
在开发框架时,在单独的标头中声明扩展(这是模板的用途)非常有用。扩展标头不是公共标头集的一部分,但将由框架的多个实现文件在内部使用。
您可以将其视为私有框架而不是私有到类。
答案 1 :(得分:9)
另一个原因是,如果您使用单元测试来测试您的类,将类扩展放在一个单独的类中,则类扩展标头文件非常有用头文件允许您将包含私有方法的头导入到需要这些私有方法的类的实现中,并导入到用于测试类的单元测试文件中 ...
在我看来,这是一个非常好的补充(在单元测试中测试私有方法的机会)到Objective-C,这是你用Java中的JUnit做不到的事情。