2013-05-28 2 views

ответ

26

Это вперед декларация типа ObjC:

@class MyClass; 

И это предварительная декларация протокола ObjC:

@protocol AVAudioSessionDelegate; 

Для тех из вас, кто интересуется, почему это полезно: форвардные декларации могут использоваться для значительного сокращения ваших зависимостей и значительного сокращения времени сборки, поскольку оно позволяет избежать заголовков и/или целых фреймворков (которые затем #import др. Каркасы). Когда форвардные декларации не используются, многие ненужные заголовки видны другим частям вашей программы. Изменение одного заголовка может привести к перекомпиляции многих файлов, а время компиляции и ссылок увеличится. Поскольку типы ObjC всегда рассматриваются как указатели (на нашем уровне абстракции), в большинстве случаев достаточно декларации в начале. Затем вы можете объявить свои ivars в своем @implementation или продолжении класса, после чего #import может перейти в файл *.m. Другая причина - избежать круговых зависимостей.

+1

Это на самом деле не отвечает, как я должен прямо объявлять объекты @interface. Пример использования того, что я дал, будет полезен. – aerlfredith

+1

Извините, ваш ответ. Решите мою проблему. Я просто не полностью понял, что вы имели в виду. Объект @interface также предопределен с помощью класса MyClass; Я ожидал чего-то большего, чем @ interface Myclass ;. Простите за это. THANKS – aerlfredith

+0

@aerlfredith приветствуется :) – justin

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