Xamarin绑定SWIFT lib:SSWIFT_UNAVAILABLE,当构造函数具有参数时



我正在尝试将SWIFT库绑定到Xamarin iOS。源代码具有类:

@objc(ClassA)
public class ClassA: NSObject {
// ...
public init(param1: StructA, param2: EnumStringA = .defaultValueA) {
// ...
}
}

但是在*-Swift.h文件中,它看起来是这样的:

SWIFT_CLASS_NAMED("ClassA")
@interface ClassA: NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

所以,当然,Sharpie工具使接口为空,没有构造函数:

[BaseType(typeof(NSObject))]
[DisableDefaultCtor]
interface ClassA
{
}

我认为这可能是因为StructA和EnumStringA都没有公开,但@objc属性不适用于structenum : String

如何使构造函数可见?

除了在我(唯一(的init参数中的协议上有@objc属性外,我还必须将@objc属性添加到我的init方法本身,使其看起来像这样(使用OP示例(:

@objc
public init(param1: MyProtocol) {
<...>
}

这将输出*-Swift.h文件中所需的代码。

最新更新