В настоящее время у меня возникают некоторые проблемы с компоновщиком при попытке компилировать программу Objective-C, и я думаю, что причина, по которой я не могу выяснить проблему, может быть связана с незнанием процесса компиляции.
Может ли кто-нибудь дать мне обзор шагов, предпринятых во время компиляции?
Это, как я сейчас понимаю, процесс:
Компилятор копирует содержимое любых включенных файлов .h в файл, в котором он был определен. Компилятор не отслеживает, был ли файл .h уже включен, поэтому он может быть включен в файл. проектировать несколько раз.
Любые файлы .m компилируются в эквивалентный код C (который, в свою очередь, компилируется в объектный код).
Компоновщик создает ссылки между объявлениями, сделанными в файлах .h, и соответствующими функциями в объектном коде. Соответствующие функции определяются путем поиска их в файле .m с тем же именем.
Объектные файлы соединены вместе, чтобы сформировать исполняемый файл, убедившись, что основная функция находится в точке входа исполняемого файла. Любые объявления затем предположительно удаляются для экономии места?
Предполагая, что это правильно (что может и не быть), это, вероятно, будет означать, что вы никогда не должны включать / исключать файлы .m, потому что вы, скорее всего, получите несколько определений методов, которые вызовут проблемы компоновщика.
Спасибо за любое освещение, которое любой может принести этому:).
Приветствия
Danny