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 даст ошибку компиляции.