Настраиваемая среда разработки Swift в зависимости от платформы ObjC поставщика 'UMCommon'.
Как только swift-файл пользовательской среды публикует класс ObjC (или протокол), xcode выдает ошибку «Counld not build module xxx».
Я создаю карту модуля, подобную этой, чтобы swift-файл фреймворка мог видеть UMCommon.
module UMCommon {
header "../../Example/Pods/UMCCommon/UMCommon.framework/Versions/A/Headers/UMCommon.h" // debug path
export *
}
Все выглядит нормально при совершении простых звонков.
файл проекта .m
#import "Test.h"
#import <UMAdapter/UMAdapter-Swift.h>
#import <UMAdapter-umbrella.h>
#import <UMCommon/UMCommon.h>
@implementation Test
-(void)test {
[[[SwiftFile alloc] init] test]; // project's Objective-C file call framework's Swift file
[[[OCFile alloc] init] test]; // project's Objective-C file call framework's Objective-C file
[UMConfigure umidString]; // project;s Objective-C file call vendor's Objective-C file
}
@end
файл проекта .swift
import UIKit
import UMAdapter
import UMCommon
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
SwiftFile().test() // project's Swift file call framework's Swift file
OCFile().test() // project's Swift file call framework's Objective-C file
UMConfigure.umidString() // project's Swift file call vendor's Objective-C file
}
}
Вы можете проверить основную ветку, чтобы увидеть успешную ситуацию.
https://github.com/slkai/UMAdapter.git
Затем я наследую UMConfigure в файле Swift фреймворка.
public class SwiftConfigure: UMConfigure {
}
Ошибка сборки.
Вы можете проверить ветку стрелы, чтобы увидеть неудачную ситуацию.
https://github.com/slkai/UMAdapter.git
Как компилятор работает со всеми этими вещами?
.modulemap
#import
@import
import
XXX-Swift.h