2013-07-31 2 views
-3

я не могу использовать #import и @classObjective-C#import @class

давайте попробуем сделать все ясно с простым классическим примером: случай служащего.

У меня есть сотрудник класса, менеджер классов и класс.

Сотрудник суперкласс менеджера, а также содержать отдел объекта (так, где я должен импортировать отдел? В employee.h или employee.m и я должен использовать #import или @class?)

Департамент содержит массив сотрудников поэтому он должен так должен импортировать класс employee.h (я должен использовать импорт или класс? и где?)

i know theres a better way to solve this problem, using databases or so 
but that's not my point, i want to understand when and where to use 
#import and where and when use @class 

я пытался читать подобный пост, но я не понимаю, как это работает. ..

ответ

3

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

Использование #import фактически импортирует файл заголовка во время компиляции и необходимо, когда вы полагаетесь на поведение рассматриваемого класса. Вот как компилятор знает, какие свойства, методы и т. Д. Можно безопасно использовать.

+0

ok вот мои сомнения ... если я хочу импортировать класс, на самом деле это связано с тем, что мне нужно работать с объектом этого класса, используя один из его методов или получая некоторые значения переменных ... вы можете сделать практический пример использования @class? Другие сомнения касаются использования этих ключевых слов. некоторые люди говорят, чтобы импортировать класс в файл заголовка, некоторые другие говорят, чтобы импортировать в .m-файл ... в чем разница? – mystudioos

+1

Я использую @class все время в файлах заголовков, где я просто объявляю ivar или свойство (или что-то еще) с типом этого класса. В этом случае нет необходимости импортировать заголовок. Однако в этом файле реализации мне нужно будет импортировать заголовок, чтобы использовать экземпляр этого класса. –

Смежные вопросы