Нужно иметь все заголовочные файлы в одном классе - ios5 - PullRequest
0 голосов
/ 16 февраля 2012

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

если возможно, есть ли какие-либо издержки ??

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Это именно так:

#import <SomeFramework/SomeFramework.h>

работает.

Это приведет к дополнительным расходам - ​​возможно, будет прочитано больше файлов, а затем проанализировано больше. Это приемлемое количество накладных расходов - решать вам.

Программы ObjC могут быть разработаны так, чтобы иметь очень очень небольшую физическую зависимость, и с #import вы экономите тонну избыточного повторного открытия заголовков (против заголовков, которые могут быть включены несколько раз). Следовательно, воздействие будет довольно небольшим, если все сделано правильно.

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

#import <SomeFramework0/SomeFramework0.h>
#import <SomeFramework1/SomeFramework1.h>
#import <SomeFramework2/SomeFramework2.h>
#import <SomeFramework3/SomeFramework3.h>
#import <SomeFramework4/SomeFramework4.h>
#import <SomeFramework5/SomeFramework5.h>

200 строк из ваших заголовков против 200 заголовков из зависимостей библиотеки ...

Я часто делаю то, что вы предлагаете, чтобы оградить клиентов от изменений в зависимостях. Они не хотят #include каждый класс в отдельности и утверждают, что по мере того, как все меняется, они просто хотят использовать библиотеку / пакет без хлопот.

1 голос
/ 16 февраля 2012

Можно создать еще один заголовок, который включает в себя все другие включения и включает только его:

common.h:

#include <somefile.h>
#include <anotherFile.h>
#include <andAnotherOne.h>

в каждом другом файле, вам нужно только:

#include "common.h"

Хотя я бы посчитал это плохой идеей, поскольку вы выставляете больше, чем нужно, каждому классу, и вы нарушаете разделение модулей в вашей программе.Кроме того, препроцессор должен будет работать больше, и, возможно, также и компилятор.

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