Возможность указывать более одного объявления и определения классов в интерфейсах и реализациях в целях-c соответственно - PullRequest
0 голосов
/ 09 августа 2010

Мне просто интересно, есть ли у меня возможность указать несколько наборов объявлений и определений классов в одном файле, не разбивая его на несколько файлов.

Я предполагаю, что это просто знак, чтобы разбить его, но мне просто интересно из любопытства.

Кроме того, бонус, если включить, в чем разница между #include и #import.

Ответы [ 3 ]

1 голос
/ 09 августа 2010

Да.Единственное действительно важное разделение - это то, что файл должен быть импортирован или скомпилирован, а не оба - то есть, если весь код, который вы передаете компилятору, не находится в main.m, вам нужен как минимум один заголовок и один файл реализации.Заголовок может содержать все детали интерфейса для всего в вашей программе, а файл реализации может содержать все детали реализации, и он будет работать так же, как если бы у вас были отдельные файлы.Вы можете просто сложить содержимое будущих файлов в конец.Это фактически то, что делают директивы #import и #include - они буквально копируют содержимое включенного файла в место, где написана директива.

Конечно, то, о чем мы здесь говорим, не 'Хороший дизайн для программы вообще.

1 голос
/ 09 августа 2010

Да, у вас может быть несколько классов в одном файле, но я не предпочитаю это.Хорошая привычка / хороший дизайн - иметь классы в разных файлах.Много помогает в повторном использовании.

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

1 голос
/ 09 августа 2010

Да, вы можете сделать это.

#import имеет встроенные проверки для предотвращения многократного включения одного и того же файла (избегая таких вещей, как #ifndef __MYHEADER_H ...)

...