Xamarin绑定SWIFT库:构造函数具有参数时SWIFT_UNAVAILABLE

busg9geu  于 2023-06-27  发布在  Swift
关注(0)|答案(1)|浏览(132)

我正在尝试将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
如何使构造函数可见?

j2qf4p5b

j2qf4p5b1#

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

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

这将在*-Swift.h文件中输出预期的代码。

相关问题