Ios 对于';没有可见的@界面;xxx和x27;声明选择器';初始化:';
我有一个objective-c类,它尝试使用以下方法初始化Swift类对象:Ios 对于';没有可见的@界面;xxx和x27;声明选择器';初始化:';,ios,objective-c,swift,xcode,Ios,Objective C,Swift,Xcode,我有一个objective-c类,它尝试使用以下方法初始化Swift类对象: - (id) init : (ObjCTestClass*) testclass { NSLog( @"Creating" ); self = [super init]; if ( !self ) { return nil; } self.testclass = testclass; self.swiftClass = [[SwiftClass
- (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类。
我有桥接头向Swift公开objective-c,反之亦然
如何解决此问题?我通过在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;
}
它应该是[[SwiftClass alloc]initWithTestClass:self.testclass]。如果设置正确,则在键入时应自动完成此操作是否需要
[[SwiftClass alloc]initWith:self.testclass]代码>?swift类定义:init(testclass:ObjCTestClass){我不确定initWith来自何处。我尝试了,但没有成功。谢谢。我说错了,应该是[[SwiftClass alloc]initWithTestClass:self.testclass]
。如果设置正确,当您键入时,这应该会自动完成。@PEEJWEEJ您的建议有效。我查看了-Swift.h以了解发生了什么。请将您的建议作为答案发布,我将接受。