Подтвердить что ты не робот

Что означает текст внутри круглых скобок в директивах @interface и @implementation?

У меня есть очень простой вопрос о некотором образце кода от Apple. В файле .m объявления классов выглядят следующим образом:

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

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

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

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

@implementation MyMovieViewController
[...]
@end

Полный код здесь.

Похоже, что в скобках содержится информация ( "OverlayView" и "ViewController" ), чтобы помочь разбить код и сделать его более читаемым, но на самом деле не влияют на выполнение кода. Но я не хочу быть недопонимающим что-то важное, поэтому я решил проверить, чтобы убедиться.

Насколько я понимаю? Спасибо!

4b9b3361

Ответ 1

Они называются Categories и позволяют добавлять дополнительные функциональные возможности в ваши классы.

Категория позволяет добавлять методы к существующему классу - даже к тому, для которого у вас нет источника. Категории - это мощная функция, которая позволяет расширить функциональность существующих классов без подкласса. Используя категории, вы также можете распространять реализацию своих собственных классов среди нескольких файлов. Расширения классов аналогичны, но позволяют объявлять дополнительные требуемые API для класса в других местах, кроме основного блока @interface.

Из документов Apple по категориям и расширениям.

Ответ 2

Это "категории".

С помощью этих функций вы можете расширить любой класс objective-C, добавив методы, которые будут применяться ко всем объектам класса.

Более подробная статья здесь: http://macdevelopertips.com/objective-c/objective-c-categories.html