我正在尝试使用Objective-c中的Swift类(就像我对其他许多类所做的那样),并且出现以下错误。
未定义符号: OBJC_CLASS $ __ TtC9FileCloud18BrowserCoordinator
问题似乎是该特定类符合Swift协议ObservableObject
:
@available(iOS 13.0, *)
@objcMembers
class BrowserCoordinator: NSObject, ObservableObject
{
//...
}
它正确显示在生成的MyProject-Swift.h
头文件中:
SWIFT_CLASS("_TtC9FileCloud18BrowserCoordinator") SWIFT_AVAILABILITY(ios,introduced=13.0)
@interface BrowserCoordinator : NSObject
//...
@end
并在从Objective-C使用时正确构建:
BrowserCoordinator* browser = BrowserCoordinator.new;
但是链接器失败。可能是Apple的错误吗?
答案 0 :(得分:1)
这里经过测试和演示(使用Xcode 12 / iOS 14)
快捷键:
import SwiftUI
import Combine
@objcMembers
public class BrowserCoordinator: NSObject, ObservableObject
{
public func go() {
print(">> test")
}
}
Objective-C:
#import "MyViewController.h"
#import "TestBacktoObjC-Swift.h"
@interface MyViewController ()
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
BrowserCoordinator* browser = BrowserCoordinator.new;
[browser go];
}
@end