Im в ситуации, когда мне нужно использовать Objective C для расширения класса Swift. Я сделал что-то следующее:
В "SomeClass.swift":
class SomeClass: NSObject {
}
В "SomeClass + Extension.h":
#import "Project-Swift.h"
@interface SomeClass (Extension)
-(void)someMethod();
@end
Это сработало хорошо. И если я попытаюсь использовать расширение SomeClass в моем коде Objective C, это нормально.
Проблема в том, что если я хочу использовать someMethod()
в другом классе Swift, мне нужно будет поместить файл SomeClass+Extension.h
в мой файл ObjC-BridgingHeader.h
.
Но выполнение этого приведет к зависимости circuclar, потому что SomeClass+Extension.h
также импортирует Project-Swift.h
.
Есть ли у кого хороший способ обойти это?
Обратите внимание, что просто переадресация объявления класса в заголовке категории не будет работать, поскольку категории не могут использовать форвардные объявления для собственной реализации так:
@class SomeClass
без импорта Project-Swift.h
даст ошибку компиляции.