我正在尝试将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
属性不适用于struct
和enum : String
如何使构造函数可见?
1条答案
按热度按时间j2qf4p5b1#
除了在我的(唯一的)
init
参数中的协议上具有@objc
属性之外,我还必须将@objc
属性添加到我的init
方法本身,这样它看起来像这样(使用OP示例):这将在
*-Swift.h
文件中输出预期的代码。