我有一个objective-c类,它尝试使用:
初始化Swift类对象- (id) init : (ObjCTestClass*) testclass
{
NSLog( @"Creating" );
self = [super init];
if ( !self )
{
return nil;
}
self.testclass = testclass;
self.swiftClass = [[SwiftClass alloc] init: self.testclass];
return self;
}
这是相应的Swift类:
final class SwiftClass: NSObject {
private var objcTestClass: ObjCTestClass
init(testclass:ObjCTestClass) {
provider = CXProvider(configuration: type(of: self).providerConfiguration)
objcTestClass = testclass
super.init()
}
}
我收到以下错误:
'xxx'没有可见的@interface声明选择器'init:'
注意: ObjCTestClass是一个objective-c类。 我有桥接头来将Objective-c暴露给Swift,反之亦然。
如何解决这个问题?
答案 0 :(得分:1)
我通过在init:
之后显式设置属性来解决上述问题final class SwiftClass: NSObject {
**public var objcTestClass: ObjCTestClass!**
init() {
provider = CXProvider(configuration: type(of: self).providerConfiguration)
super.init()
}
}
- (id) init : (ObjCTestClass*) testclass
{
NSLog( @"Creating" );
self = [super init];
if ( !self )
{
return nil;
}
self.testclass = testclass;
**self.swiftClass = [[SwiftClass alloc] init];
self.swiftClass.objcTestClass = self.testclass;**
return self;
}
答案 1 :(得分:1)
它应该是[[SwiftClass alloc] initWithTestClass:self.testclass]。如果正确设置,这应该在您输入时自动完成