Objective-C를 사용한 Learning Cocoa 책에서 찾을 수있는 좋은 답변 (ISBN : 978-1-491-90139-7)
모듈은 파일과 라이브러리를 프로젝트에 포함하고 연결하는 새로운 수단입니다. 모듈의 작동 방식과 그 이점을 이해하려면 Objective-C의 역사와 #import 문을 다시 살펴 보는 것이 중요합니다. 사용할 파일을 포함 할 때마다 일반적으로 다음과 같은 코드가 있습니다.
#import "someFile.h"
또는 프레임 워크의 경우 :
#import <SomeLibrary/SomeFile.h>
Objective-C는 C 프로그래밍 언어의 상위 집합이므로 #import #include
문 은 C의 진술을 약간 수정 한 것 입니다. #include 문은 매우 간단합니다. 컴파일하는 동안 포함 된 파일에서 찾은 모든 것을 코드에 복사합니다. 때때로 심각한 문제가 발생할 수 있습니다. 예를 들어, 두 개의 헤더 파일이 상상 : SomeFileA.h
및 SomeFileB.h
; SomeFileA.h
포함SomeFileB.h
하고 SomeFileB.h
포함 SomeFileA.h
합니다. 이것은 루프를 만들고 코임 필러를 혼동시킬 수 있습니다. 이를 처리하기 위해 C 프로그래머는 이러한 유형의 이벤트가 발생하지 않도록 가드를 작성해야합니다.
를 사용할 #import
때이 문제에 대해 걱정하거나 헤더 가드를 작성하지 않아도됩니다. 그러나 #import
여전히 영광스러운 복사 후 붙여 넣기 작업이므로 다른 작지만 여전히 매우 위험한 문제 (예 : 자신의 코드에서 다른 곳에서 선언 한 내용을 덮어 쓰는 포함 된 파일)간에 컴파일 시간이 느려집니다.
모듈은이 문제를 해결하려는 시도입니다. 더 이상 소스 코드로 복사하여 붙여 넣기가 아니라 필요할 때 언제 어디서나 소스 코드로 가져올 수있는 포함 된 파일의 직렬화 된 표현입니다. 모듈을 사용하면 코드는 일반적으로 #include 또는를 사용하는 것보다 더 빠르게 컴파일되고 안전 #import
합니다.
프레임 워크 가져 오기의 이전 예제로 돌아 가기 :
#import <SomeLibrary/SomeFile.h>
이 라이브러리를 모듈로 가져 오려면 코드가 다음과 같이 변경됩니다.
@import SomeLibrary;
이는 SomeLibrary 프레임 워크를 프로젝트에 자동으로 연결하는 Xcode의 추가 보너스를 제공합니다. 모듈을 사용하면 실제로 필요한 구성 요소 만 프로젝트에 포함시킬 수 있습니다. 예를 들어 AwesomeLibrary 프레임 워크에서 AwesomeObject 구성 요소를 사용하려면 일반적으로 한 조각 만 사용하기 위해 모든 항목을 가져와야합니다. 그러나 모듈을 사용하면 사용하려는 특정 객체를 가져올 수 있습니다.
@import AwesomeLibrary.AwesomeObject;
Xcode 5로 작성된 모든 새 프로젝트의 경우 기본적으로 모듈이 활성화되어 있습니다. 이전 프로젝트에서 모듈을 사용하려면 (그리고 실제로해야 함) 프로젝트의 빌드 설정에서 모듈을 활성화해야합니다. 일단 그렇게 하면 걱정없이 코드의 #import
및 @import
문을 함께 사용할 수 있습니다 .