Program Club

우산 헤더는 무엇입니까?

proclub 2020. 11. 18. 21:42
반응형

우산 헤더는 무엇입니까?


기본적으로 우산 헤더는 무엇입니까? 그 용도는 무엇입니까? 아래와 같이 경고를 받았습니다. 이것은 무엇을 의미 하는가?

<module-includes>:1:1: warning: umbrella header for module 'XCTest' does not include header 'XCTextCase+AsynchronousTesting.h' [-Wincomplete-umbrella]
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers/XCTest.h"

우산 헤더는 프레임 워크에 대한 '마스터'헤더 파일입니다. 그것의 용도는 당신이 쓸 수 있다는 것입니다

#import <UIKit/UIKit.h>

대신에

#import <UIKit/UIViewController.h>
#import <UIKit/UILabel.h>
#import <UIKit/UIButton.h>
#import <UIKit/UIDatePicker.h>

등등.

나를 위해 <XCTest/XCTestCase+AsynchronousTesting.h><XCTest/XCTest.h>. 당신을위한 것이 아닐까요? 이 경우

#import <XCTest/XCTestCase+AsynchronousTesting.h>

수동으로.


umbrella header- 아이폰 OS frameworklibrary에는 Objective-C해당 프로젝트의 다른 모든 헤더에 대한 참조를 포함하는 헤더 파일을 가질 수 있습니다.

프레임 워크 타겟을 생성하면 Xcode가 자동으로 <targer_name>.h파일을 생성 합니다. 이름은 다음과 같아야합니다.Product Name

Build Settings:

  • Product Name -기본값은 $(TARGET_NAME:c99extidentifier)
  • Product Module Name -기본값은 $(PRODUCT_NAME:c99extidentifier)

예를 들어 <umbrella_name>.h같은 외모

#import "header_1.h"
#import "header_2.h"

결과적으로 다음 구문을 사용할 수 있습니다.

#import <umbrella_name>.h

대신에

#import <header_1>.h
#import <header_2>.h

또한 umbrella header일반적인 module map구조 도 필요합니다. [정보] [프레임 워크 모듈 예] [수동 생성]

실제로 FrameworkObjective-C[예제] 또는 Swift[예제]에서 생성 할 때이 파일이 자동으로 생성됩니다.<product_name>

프레임 워크 대상 Objective-C내로 가져 오기Swift

우산 헤더에서 Swift에 노출하려는 모든 Objective-C 헤더를 가져옵니다.

Swift는 우산 헤더에서 공개적으로 노출하는 모든 헤더를 확인합니다. 해당 프레임 워크에있는 Objective-C 파일의 내용은 import 문없이 해당 프레임 워크 대상 내의 모든 Swift 파일에서 자동으로 사용할 수 있습니다. 시스템 클래스에 사용하는 것과 동일한 Swift 구문으로 Objective-C 코드의 클래스 및 기타 선언을 사용하십시오.

참고 URL : https://stackoverflow.com/questions/31238761/what-is-an-umbrella-header

반응형