@protocol 缺少基本类型

Base type is missing for @protocol

短版:

缺少基本类型的 @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

但这没有多大意义...根据 Microsoft 的文档:

The API definition file consists of a number of interfaces. The interfaces in the API definition will be turned into a class declaration and they must be decorated with the [BaseType] attribute to specify the base class for the class.

那么在这种情况下我该怎么做,我可以安全地为该协议假定 NSObject 的基本类型吗?

首先,检查BaseTypeAttribute

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

参考this sample

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