@interface和@implementation指令中括号内的文字是什么意思?

时间:2011-09-11 13:25:38

标签: ios objective-c uiviewcontroller

我有一个关于Apple的一些示例代码的基本问题。在.m文件中,类声明如下所示:

@interface MyMovieViewController (OverlayView)
[...]
@end

@interface MyMovieViewController (ViewController)
[...]
@end

@implementation MyMovieViewController(ViewController)
[...]
@end

@implementation MyMovieViewController (OverlayView)
[...]
@end

@implementation MyMovieViewController
[...]
@end

完整代码here

似乎括号内的内容(“OverlayView”和“ViewController”)只是帮助分解代码并使其更具可读性,但实际上不会影响代码的执行。但我不想误解一些重要的东西,所以我想我会检查以确保。

我的理解是对的吗?谢谢!

2 个答案:

答案 0 :(得分:22)

这些名为Categories,允许您为类添加更多功能。

  

类别允许您将方法添加到现有类 - 甚至是您没有源的类。类别是一个强大的功能,允许您在不进行子类化的情况下扩展现有类的功能。使用类别,您还可以在多个文件中分发您自己的类的实现。类扩展类似,但允许在除主类@interface块之外的位置为类声明其他必需的API。

From the Apple docs on Categories and Extensions.

答案 1 :(得分:4)

这些是“类别”。

通过添加方法,您可以扩展任何Objective-C类,这些方法将应用于该类的所有对象。

此处有更详细的文章:http://macdevelopertips.com/objective-c/objective-c-categories.html