Что такое заголовок зонтика?
Что такое в основном заголовок зонтика? Каково его использование? Я получил предупреждение, как показано ниже. Что это значит?
<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"
Ответы
Ответ 1
Заголовок зонтика - это заголовочный файл "master" для фреймворка. Его использование заключается в том, что вы можете написать
#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>
вручную.
Ответ 2
umbrella header
- iOS framework
или library
в 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
[About] [Framework module example] [Manually creation]
На практике, когда вы создаете Framework
в Objective-C
[Example] или Swift
[Example], этот файл будет создан автоматически с помощью <product_name>
Импорт Objective-C
в Swift
в рамках целевой платформы
В зонтичном заголовке импортируйте каждый заголовок Objective-C, который вы хотите представить в Swift.
Swift видит все заголовки, которые вы публикуете, в заголовке зонтика. Содержимое файлов Objective-C в этой платформе автоматически доступно из любого файла Swift в этой целевой платформе без операторов импорта. Используйте классы и другие объявления из вашего кода Objective C с тем же синтаксисом Swift, который вы используете для системных классов.