短版:
具有基本类型缺失的@protocol
在Objective-C中是否具有NSObject
的推断基本类型?
长版:
我将Objective C库绑定到C#。这个图书馆中的一个协议缺少基本类型......通常我会期待这样的事情:
@protocol Account <NSObject, NSCopying, NSSecureCoding>
我定义为:
[Protocol, Model]
[BaseType(typeof(NSObject))]
interface Account : INSCopying, INSSecureCoding
但现在我面临以下情况:
@protocol Configuring
因此它将被定义为:
[Protocol, Model]
interface Configuring
但这没有多大意义......根据微软的文档:
API定义文件由许多接口组成。该 API定义中的接口将变为类 声明,它们必须使用[BaseType]属性进行修饰 指定类的基类。
那么在这种情况下该怎么做呢,我可以安全地假设此协议的基本类型为NSObject
吗?
答案 0 :(得分:1)
首先,检查BaseTypeAttribute。
定义中的每个interface
(包括Protocol
)都具有[BaseType]
属性,该属性声明了生成对象的基本类型。
请参阅this sample。
此处InfColorPickerControllerDelegate
是协议,我们应该添加[BaseType(typeof(NSObject))]
。