Не удалось выдать предварительно скомпилированный заголовок из-за условия цикла - PullRequest
0 голосов
/ 12 июня 2018

Пусть говорят, что у меня есть классы Swift и Objc, и MyProject-Bridging.h

BazSwiftClass.swift

public class BazSwiftClass: NSObject {
    public let foo: String
    @objc init(foo: String) {
        self.foo = foo
    }
}

FooClass.h

#import "MyProject-Swift.h"
@interface FooClass : NSObject {
     - (BazSwiftClass)bazMethod;
}

Iя хочу получить доступ к FooClass.h в другом классе Swift (пусть говорит BarSwiftClass)

public class BarSwiftClass {
     public hello() -> BazSwiftClass {
          return FooClass().bazMethod()
     } 
}

Мне нужен FooClass.h в моем файле swift, поэтому я добавил FooClass в свой MyProject-Bridging.h

#import "FooClass.h"

Таким образом, поток выглядит как BarSwiftClass -> FooClass -> BazSwiftClass

Это не может работать, потому что компилятор показывает «не удалось сгенерировать предварительно скомпилированный заголовок», и я думаю, что этоиз-за #import "FooClass.h" в MyProejct-Bridging.h

Пожалуйста, помогите.

Спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

Замените ваш код

#import "MyProject-Swift.h"
@interface FooClass : NSObject {
     - (BazSwiftClass)bazMethod;
}

На

@class BazSwiftClass
@interface FooClass : NSObject {
     - (BazSwiftClass)bazMethod;
}

и в FooClass.m Файл, который вы можете импортировать # import "MyProject-Swift.ч "

...