Изучение Objective-C и других языков на основе c Я узнал, что вы должны поместить #include и #imports в заголовочный файл.
нет - не на языках c. вы должны поместить их в файлы реализации, где это возможно. вы не всегда можете создать заголовок с нулевой зависимостью, но вы должны минимизировать его.
Языки на основе c требуют много времени для компиляции, особенно когда зависимости и включения очень сложны, или есть ненужные включения (введение большей зависимости, по совпадению).
И @класс тоже идет туда. Недавно, глядя на пример кода из Apple и других источников в Интернете, @class находится в заголовке, а все импортированные файлы находятся в файле реализации. Что правильно?
используйте предварительные объявления (@class NAME;
, @protocol NAME;
, struct NAME
, класс NAME; `и т. Д.) Везде, где вы можете.
Есть ли причины для обоих?
Включение в заголовок - это ленивый способ, он замедляет время сборки и вносит большую зависимость. это удобно, потому что вам не нужно писать столько объявлений include / import, но это не важно для людей, которые должны использовать ваши программы.
Кроме того, зачем вам нужно указывать объявление @class, если вы импортируете файл заголовка.
если интерфейс класса уже виден (уже включен, или другой файл объявил его), вам не нужны оба. вам понадобится интерфейс, видимый, если вы собираетесь использовать тип (кроме некоторых очень тривиальных случаев).
вы наверняка не будете рады исправить ошибку, когда время вашей сборки станет медленным - лучше учиться и реализовывать, используя правильный подход. если вы не разработали сложный проект c, вы, вероятно, будете очень удивлены, узнав, сколько времени теряется при компиляции.
если вы ожидаете, что ваши программы никогда не станут нетривиальными и никогда не будут переданы или использованы повторно, делайте все, что пожелаете.
удачи!