2014-11-15 73 views
0

这是来自游戏教程的入门项目中的ViewController.m文件。这个语法与接口声明有什么关系?

@interface ViewController() 

//irrelevant stuff omitted 

@end 

这是ViewController()位让我困惑。我了解公共和私人接口的不同之处,但直到Objective-C还没有使用私有接口。我已经习惯了看到这样的事情,而不是为了公共接口:

@interface ViewController : UIViewController 

那么,为什么现在它只是第一个,并用括号,没有继承符号?

回答

2

这是一个class extension。它允许声明额外的接口,通常是私有的,因为它在一个实现(.m)文件中。它与类别相似,只不过编译器会要求您为其中声明的任何接口提供实现。 (即使没有提供任何实现,类别也可以声明一个接口。)