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

jed*_*ort 23 objective-c uiviewcontroller ios

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

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

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

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

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

@implementation MyMovieViewController
[...]
@end
Run Code Online (Sandbox Code Playgroud)

完整代码在这里.

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

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

Fai*_* S. 22

这些被调用Categories,允许您向类添加更多功能.

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

来自Apple类别和扩展的文档.


coy*_*508 5

这些是“类别”。

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

更详细的文章在这里:http : //macdevelopertips.com/objective-c/objective-c-categories.html