Q:What exactly are ... header files
A: Заголовочный файл - это файл, содержание которого компилятор 'вставляет' вместо #import...
(#include
и другие аналогичные директивы) линия. Заголовочные файлы содержат открытый код: форвардные объявления классов, перечислений, переменных, функций и т. Д.
Q:What exactly are class extensions …
A:Class Extension
- это языковая конструкция, которая позволяет расширяет интерфейс класса.
Чтобы лучше понять, что это такое, вы должны понимать, что такое класс category
.
Category
- это языковая конструкция, которая позволяет добавлять функциональность (только методы!) К существующему классу. Даже без подкласса.
Пример:
Вы можете добавить новый метод NSImage:
@interface NSImage(YourExtensionName)
- (CGImageRef)CGImage;
@end
Class Extension
(также известный как класс продолжения, или unnamed category
) имеет некоторое сходство с категорией, но она может быть добавлена только к классу для которого у вас есть исходный код во время компиляции.
В class extension
вы можете использовать то же самое, что используете в обычном блоке @interface
.
Q:What are difference
A: Заголовочный файл используется для включать в программу некоторые способности (структуры, типы данных, константы, функции и т.д.) один. Расширения класса используются для расширения существующего класса с некоторой функциональностью. Обычно class extension
является частным интерфейсом класса. Функциональность, объявленная class extension
, реализована в блоке @implementation для исходного класса, поэтому вы не можете, например, объявить расширение класса в классе фреймворка, например класс Cocoa или Cocoa Touch, такой как NSString.
Q:What is the difference between declaring a property/method in a header file vs in a class extension
A: Если вы объявляете свойство/метод в заголовочном файле, то любой пользователь .h файл может получить доступ к этой недвижимости/метод. Расширения класса используют для объявления частного интерфейса для вас.
По расширению класса, вы имеете в виду '@ class'? – popctrl
@ AnthonyLawrence, нет, это передовая декларация. – vikingosegundo