Objective-C # import для классов - PullRequest
       0

Objective-C # import для классов

1 голос
/ 01 ноября 2011

Я серьезно запутался в импорте Objective-C #.

Я искал и нашел несколько учебных пособий, в которых говорилось, что если у меня много ограничений, таких как

#define val1 
#define val100

, лучше поставить всеограничения в одном файле и импортируйте этот файл для повторного использования всех значений.

Но я все еще в замешательстве, я видел много примеров кода, которые # импортируют заголовки всех других файлов, в которых нет

#define constraints 

Эти два файла являются обычными UIViewControllers, но их заголовки импортируются.

#import viewcontroler1.h 
#import viewcontroler2.h 
  1. Когда мы можем просто создавать объекты классов, зачем их импортировать?
  2. Где импортировать файлы в формате .h или .m?
  3. Что импортировать, файл .h или .m в Objective-C?

Iсерьезно запутался, пожалуйста, помогите мне.

Ответы [ 3 ]

3 голосов
/ 01 ноября 2011

Я не уверен, что я действительно понимаю, о чем вы просите, но вы должны избегать импорта заголовочных файлов в другие заголовочные файлы, если вам это не нужно. Вместо этого #import заголовки, которые вам нужны в файле .m, и вместо этого используйте директиву @class в файлах .h.

Из документов Apple :

Директива @class минимизирует объем кода, видимого компилятором. и линкер, и, следовательно, самый простой способ дать вперед объявление имени класса. Будучи простым, он избегает потенциальных проблемы, которые могут возникнуть при импорте файлов, которые импортируют еще файлы. Например, если один класс объявляет статически типизированный экземпляр переменная другого класса, и их два интерфейсных файла импортируют каждый другой, ни один класс не может скомпилировать правильно.

В противном случае вы можете подвергать импортированные переменные большему количеству классов, чем вам действительно нужно. Если вы импортируете constants.h в viewcontroler1.h, любой другой класс, импортирующий viewcontroler1.h, также будет иметь constants.h. Иногда это может быть то, что вам нужно, но обычно это не так.

Надеюсь, что это помогло в каком-то аспекте ...

1 голос
/ 01 ноября 2011

#import говорит компилятору (простыми словами) прочитать содержимое импортированного файла, прежде чем он пойдет дальше.

Если вы импортируете файл, содержащий операторы #define, то макросы в нем будут доступны для использования при написании кода в этом файле.

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

В теории вы можете написать каждую строку кода для своего проекта в одном огромном файле и никогда не использовать #import вообще (кроме импорта заголовков UIKit и Foundation!). Но это было бы очень глупо.

0 голосов
/ 01 ноября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...