Подтвердить что ты не робот

Что такое заголовок зонтика?

Что такое в основном заголовок зонтика? Каково его использование? Я получил предупреждение, как показано ниже. Что это значит?

<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"
4b9b3361

Ответ 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, который вы используете для системных классов.