꺾쇠 괄호 <> 및 따옴표 ""를 사용하여 #import


120

사용할 수 있는지 <Header.h>또는 "Header.h"Objective-C에서 파일을 가져올 때 무엇을 결정하는지 궁금합니다 . 지금까지 내 관찰은 ""구현 소스가있는 프로젝트의 파일에 따옴표를 사용하고 <>라이브러리 또는 프레임 워크를 참조 할 때 꺾쇠 괄호를 사용한다는 것 입니다.

하지만 정확히 어떻게 작동합니까? 괄호를 사용하기 위해 내 자신의 클래스를 얻으려면 어떻게해야합니까? 현재 Xcode는 내 헤더에 대해 그렇게 할 수 없습니다.

또한 일부 프레임 워크 헤더를 살펴보면 헤더가 <frameworkname/file.h>. 어떻게 그런 일을? Java의 패키지처럼 보이지만 내가 아는 한 Objective-C에는 패키지와 같은 것이 없습니다.

답변:


122

Objective-C는 C / C ++와 공통점이 있습니다. 인용 된 형식은 파일의 "로컬"포함 (예 : 현재 파일의 상대 경로를 지정해야 함 #include "headers/my_header.h")을위한 것이고 꺾쇠 괄호 형식은 "전역"포함을위한 것입니다. 컴파일러 (예 :) #include <math.h>.

따라서 자신의 헤더를 사용 하기 위해 헤더 디렉토리의 상대 경로 또는 절대 경로를 컴파일러에 전달할 필요가 < >없습니다 " ". Xcode 에서 수행하는 방법에 대한 정보는 "Xcode에 대한 전역 포함 경로를 추가하는 방법"을 참조하십시오 .

자세한 내용은 이 MSDN 페이지 를 참조하십시오.


1
AFNetworking을 #import <AFNetworking / AFHTTPRequestOperationManager.h>로 참조하는 GitHub 프로젝트에 문제가 발생하여 $ (SRCROOT) / lib / AFNetworking을 헤더 검색 경로로 사용해야했습니다. 이 폴더 아래에는 AFNetworking이라는 또 다른 폴더가 있습니다.이 폴더는 꺾쇠 괄호가있는 가져 오기에서 해당 경로로 찾는 방법입니다. 일반적으로 #import "AFHTTPRequestOperationManager.h"는 작동하지만이 프로젝트에서는 다르게 참조합니다.
Brennan

이유는 C / C ++와 같은 것 같습니다. 꺾쇠 괄호 (<> 기호로 표시)는 현재 로컬 디렉토리 이외의 파일을 검색 함을 나타내는 반면 따옴표 ( ""기호로 표시됨)는 현재 로컬 디렉토리에서 파일을 검색 함을 나타냅니다.
Jayprakash Dubey

답변 끝에있는 링크가 오래되었습니다.
Pang

14

C에서 관례는 <>괄호 안의 헤더 파일 이 '시스템'디렉토리와 ""사용자 또는 로컬 디렉토리에서 검색 된다는 것 입니다.

시스템과 로컬의 정의는 약간 모호하다고 생각합니다. 포함 경로 또는 CPPFLAGS에서 <header.h>에 대한 시스템 디렉터리를 찾고 컴파일러에 -I로 지정된 로컬 디렉터리 또는 디렉터리에서 "header.h"파일을 검색한다고 생각합니다.

Objective-C에서도 비슷하게 작동한다고 가정합니다.


6

"<>"를 사용하여 자신의 클래스를 가져 오려면 컴파일러의 lib 폴더에 헤더 파일 (* .h)을 넣거나 lib 폴더에 SYSTEM VARIABLES를 설정해야합니다.


2

또는 설정 Always Search User PathYES당신이 꺾쇠 괄호를 사용할 수 있습니다.


1

<Foundation/Foundation.h>를 들어 꺾쇠 괄호를 사용하면 시스템 파일을 가져올 수 있습니다.

큰 따옴표 "Person.h"를 사용 하여 로컬 파일 (사용자가 만든 파일)을 가져오고 컴파일러에게 파일을 찾을 위치를 알립니다.


1

<Name.h>- 사전 지정된 특수 시스템 디렉토리 Angle brackets에서 검색하도록 전처리기에 지시합니다 . 예를 들어 프레임 워크 와 같 거나 추가 된 시스템 헤더를 가져옵니다.<UIKit/UIKit.h>

"Name.h"- 현재 디렉토리 Quotation marks에서 검색하도록 전처리기에 지시합니다 . 헤더를 찾을 수없는 경우 전처리 기는 . 일반적으로 프로젝트 파일과 함께 사용해야합니다.<Name.h>


0

같은 문제를 만났을 때 Xcode는 두 가지 유형의 검색 경로가 있습니다.

User Header Search Paths
Header Search Paths

헤더 검색 경로에 자신의 포함 폴더를 추가하면 문제없이 꺾쇠 괄호를 사용할 수 있습니다.


-4

헤더 파일이란 무엇입니까? 헤더 파일에는 전 처리기 #include 문을 사용하여 C 프로그램에 통합 할 수있는 함수 및 변수의 정의가 포함되어 있습니다. 표준 헤더 파일은 각 컴파일러와 함께 제공되며 다양한 영역, 문자열 처리, 수학, 데이터 변환, 인쇄 및 변수 읽기를 포함합니다. Ex- #include는 scanf ()와 같은 입력에 대한 정보를 포함하고 컴파일러에서 printf () 함수와 같은 출력 등을 포함합니다.

포함

1) #INCLUDE :-주 기능 처리 전 처리하는 전 처리기입니다. 전 처리기의 주된 작업은 프로그램의 환경을 초기화하는 것입니다. 즉, 헤더 파일이있는 프로그램입니다. 2) .h :-(헤더 파일) 헤더 파일은 C 함수 선언과 매크로 정의를 포함하고 여러 소스 파일간에 공유되는 확장자가 .h 인 파일입니다. Q) 헤더 파일에는 프로그래머가 작성하는 파일과 컴파일러와 함께 제공되는 파일의 두 가지 유형이 있습니다. A) 꺾쇠 괄호에서 꺾쇠 괄호 형식은 "글로벌"포함을위한 것입니다. 컴파일러에 전달 된 포함 경로 (예 : #include) 어딘가에있는 것입니다. 컴파일러에서 정의 할 준비가 된 라이브러리 함수를 사용하는 데 사용됩니다. C에서 관례는 <> 괄호 안의 헤더 파일이 'system'에서 검색된다는 것입니다. 디렉토리 B) 인용 부호 :- "header.h"인용 형식은 파일의 "로컬"포함을위한 것입니다 (현재 파일의 상대 경로를 지정해야합니다 (예 : #include "headers / my_header.h")). C에서 규칙 ""의 헤더 파일이 사용자 또는 로컬 디렉토리에서 검색된다는 것입니다. 하나의 파일이 다른. (FILE INCLUSION)에 포함됩니다. 두 가지 경우에 사용할 수 있습니다. 사례 1 : 매우 큰 프로그램이있는 경우 코드는 각각 관련 함수 집합을 포함하는 여러 파일로 분할하는 것이 가장 좋습니다. 사례 2 : 우리가 작성하는 모든 프로그램에 기껏해야 필요한 함수와 마이크로 정의가 있습니다. 전의 ) C에서 규칙은 ""의 헤더 파일이 사용자 또는 로컬 디렉토리에서 검색된다는 것입니다. 하나의 파일이 다른. (FILE INCLUSION)에 포함됩니다. 두 가지 경우에 사용할 수 있습니다. 사례 1 : 매우 큰 프로그램이있는 경우 코드는 각각 관련 함수 집합을 포함하는 여러 파일로 분할하는 것이 가장 좋습니다. 사례 2 : 우리가 작성하는 모든 프로그램에 기껏해야 필요한 함수와 마이크로 정의가 있습니다. 전의 ) C에서 규칙은 ""의 헤더 파일이 사용자 또는 로컬 디렉토리에서 검색된다는 것입니다. 하나의 파일이 다른. (FILE INCLUSION)에 포함됩니다. 두 가지 경우에 사용할 수 있습니다. 사례 1 : 매우 큰 프로그램이있는 경우 코드는 각각 관련 함수 집합을 포함하는 여러 파일로 분할하는 것이 가장 좋습니다. 사례 2 : 우리가 작성하는 모든 프로그램에 기껏해야 필요한 함수와 마이크로 정의가 있습니다. 전의

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.