109

Вопрос по import, packages, syntax, objective-c – #import с использованием угловых скобок <> и кавычек «»

Мне интересно, что решает, разрешено ли вам использовать<Header.h> или же"Header.h" когда вы импортируете файлы в Objective-C. До сих пор я наблюдал, что вы используете кавычки"" для файлов в вашем проекте, к которым у вас есть источник реализации, и угловые скобки<> когда вы ссылаетесь на библиотеку или фреймворк.

Но как именно это работает? Что мне нужно сделать, чтобы мои классы использовали скобки? Прямо сейчас XCode не позволит мне сделать это для моих собственных заголовков.

Кроме того, просматривая заголовки некоторых фреймворков, я вижу, что заголовки ссылаются друг на друга с помощью<frameworkname/file.h>, Какthat Работа? Это очень похоже на пакеты в Java, но, насколько я знаю, в Objective-C нет такой вещи, как пакет.

7 ответов
2

Или установить

Always Search User Path вYES так что вы можете использовать угловые скобки.

111

Objective-C имеет то же самое с C / C ++

цитируемая форма предназначена для "местного" включает файлы (вам нужно указать относительный путь из текущего файла, например,#include "headers/my_header.h"), в то время как форма угловых скобок предназначена для «глобального» include - найденные где-то в пути включения, переданном компилятору (например,#include <math.h>).

Таким образом, чтобы использовать свои собственные заголовки< > не" " вам нужно передать компилятору относительный или абсолютный путь для вашей директории заголовка. Увидеть& quot; Как добавить глобальный путь включения для Xcode & quot; для информации о том, как сделать это в Xcode.

Увидетьэта страница MSDN для получения дополнительной информации.

У меня только что возникла проблема с проектом GitHub, который ссылается на AFNetworking как #import & lt; AFNetworking / AFHTTPRequestOperationManager.h & gt; поэтому мне пришлось $ (SRCROOT) / lib / AFNetworking в качестве пути поиска заголовка. В этой папке есть еще одна папка с именем AFNetworking, которая используется для импорта с угловыми скобками по этому пути. Обычно #import & quot; AFHTTPRequestOperationManager.h & quot; будет работать, но для этого проекта он просто ссылается на это по-другому.

от 

Кажется, причина та же, что и для C / C ++. Угловая скобка (обозначается символом & lt; & gt;) указывает, что поиск файла отличается от текущего локального каталога, тогда как кавычки (обозначаются символом "& quot;") указывают, что поиск файла выполняется в текущем локальном каталоге.

от 
-3

Что такое файл заголовка?

Заголовочные файлы содержат определения функций и переменных, которые могут быть включены в любую программу на языке C с помощью оператора & # xA0; препроцессор & # xA0; #include. & # XA0; Стандартные файлы заголовков & # xA0; поставляются с каждым компилятором; диапазон областей, обработка строк, математика, преобразование данных, печать и чтение переменных. Ex- #include содержит информацию о вводе, например, scanf (), и выводит его как функцию printf () и т. Д. В компиляторе.

INCLUDE

1) # ВКЛЮЧИТЬ: - Это препроцессор, который обрабатывает перед процессом основной функции. Основная работа препроцессора заключается в инициализации среды программы, то есть программы с файлом заголовка. 2) .h: - (Заголовочный файл) Заголовочный файл - это файл с расширением & # xA0; .h & # xA0; который содержит объявления функций C и определения макросов и может использоваться несколькими исходными файлами. Q) Есть два типа заголовочных файлов: файлы, которые пишет программист, и файлы, которые поставляются с вашим компилятором? А) В угловых скобках Форма угловых скобок предназначена для «глобального» include - найденные где-то в пути включения, переданном компилятору (например, & # xA0; #include) Используется для использования библиотечной функции, которую все готово определить в компиляторе. В С соглашается, что заголовочные файлы в & lt; & gt; скобки ищутся в «системе» каталоги и # xA0; Б) Кавычки: - & # x201C; header.h & # x201D; цитируемая форма предназначена для "местного" включает в себя файлы (вам необходимо указать относительный путь из текущего файла, например, & # xA0; #include & heot; headers / my_header.h & quot;) В С соглашается, что заголовочные файлы в & # xA0; & quot; & Quot; поиск в пользовательских или локальных каталогах. В нем один файл должен быть включен в другой. (ВКЛЮЧЕНИЕ ФАЙЛА). Может использоваться в двух случаях: Случай 1: если у нас очень большая программа, код лучше всего разделить на несколько разных файлов, каждый из которых содержит набор связанных функций. Случай 2: есть некоторые определения функций и микроопределений, которые нам нужны максимум во всех программах, которые мы пишем. бывший

0

Просто наткнулся на ту же проблему, есть 2 типа путей поиска Xcode:

User Header Search Paths
Header Search Paths

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

6

Чтобы импортировать свои собственные классы, используя & quot

& lt; & GT; & Quot; Вы должны поместить файлы заголовков (* .h) в папку lib компилятора или установить ponting SYSTEM VARIABLES в вашу папку lib.

13

В С соглашается, что заголовочные файлы в & lt

& gt; скобки ищутся в «системе» каталоги и & quot; в пользовательских или локальных каталогах.

Я думаю, что определение системы и локальности немного расплывчато. Я полагаю, что он просматривает системные каталоги во включаемом пути или в CPPFLAGS, а в локальном каталоге или каталоге, указанном с -I для компилятора, ищется & quot; header.h & quot; файлы.

Я предполагаю, что это работает аналогично для Objective-C.

0

Найдите указанный файл в той же папке

"" - Quotation marks что и этот файл (файл .m, в котором находится строка #import).

<> - Angle brackets Ищите названный файл среди различных путей поиска заголовка, указанных в настройках сборки. (Эти пути поиска устанавливаются автоматически, и вам обычно не нужно их изменять.)

В общем, вы будете использовать угловые скобки для ссылки на файл заголовка, принадлежащий API-интерфейсу Cocoa, и кавычки для ссылки на файл заголовка, который вы написали. Если вам интересно, что импортирует директива #import, выберите ее (в Xcode) и выберите «Файл» & # x2192; Открыть быстро, чтобы отобразить содержимое назначенного файла заголовка.

Узнайте больше здесь -https://www.oreilly.com/library/view/programming-ios-6/9781449365783/ch01s10.html

Похожие вопросы