Заголовок расширения класса Objective-C - для чего?

Я знаком с расширениями класса Objective-C класса в основном файле реализации класса, но любопытно, для чего предназначен новый шаблон файла заголовка Xcode 4.4 "An Objective-C"?

Ответы

Ответ 1

Расширения классов должны быть реализованы в основном блоке @implementation, но объявление может быть где угодно.

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

Объявление расширения в том же файле реализации, с которым вы знакомы, используется, когда расширение используется только самой реализацией класса.

Объявление расширения в отдельном заголовке, для чего предназначен шаблон, полезно при разработке фреймворка. Заголовок расширения не будет частью набора публичных заголовков, но будет использоваться внутри более чем одним файлом реализации фреймворка.

Вы можете считать его приватным для фреймворка вместо частного класса.

Ответ 2

Еще одна причина заключается в том, что файл заголовка расширения класса полезен в случае, если вы используете Unit Test, чтобы протестировать ваш класс, добавив расширение класса в отдельный заголовочный файл позволяет импортировать заголовок, содержащий частные методы, в реализацию класса, который нуждается в этих частных методах, и в файл unit test, который вы используете для тестирования класса...

Это очень хорошее дополнение (возможность проверить частные методы в unit test) на Objective-C, на мой взгляд, это то, что вы не можете сделать в данный момент с JUnit в Java.