【问题标题】:Base type is missing for @protocol@protocol 缺少基本类型
【发布时间】:2018-03-29 00:24:48
【问题描述】:

短版:

在 Objective-C 中,缺少基本类型的 @protocol 是否具有推断的基本类型 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

【问题讨论】:

  • 不要混淆类NSObject和协议NSObjectAccount &lt;NSObject&gt; 表示 Account 符合 NSObject 协议。 Objective-C 中的协议没有基本类型。

标签: c# objective-c binding xamarin.ios objective-sharpie


【解决方案1】:

首先,检查BaseTypeAttribute

定义中的每个interface(包括Protocol)都具有声明生成对象的基类型的[BaseType] 属性。

请参阅this sample

这里InfColorPickerControllerDelegate是协议,我们应该添加[BaseType(typeof(NSObject))]

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多