无法对类型X <NSObject>的目标C协议采用Swift类

时间:2019-06-19 15:42:54

标签: ios swift

我对Swift还是很陌生,所以在这里我可能会说些奇怪的话。抱歉!

在目标C中,我具有以下(简化的)协议:

@protocol OtherProtocol <NSObject>
@optional

...

@end

我想在Swift(4.2)中创建一个遵守该协议的类,因此我将类定义为:

class MyClass : OtherProtocol {

}

自然,由于我的类没有正确的方法,所以XCode会抱怨。

除了NSObject中定义的方法外,似乎还需要实现一系列OtherProtocol方法。当XCode在NSObject中添加缺少的方法存根时,有一个特别给人的问题:

func `self`() -> Self {
    ...
}

此方法的问题是Method cannot be an implementation of an @objc requirement because its result type cannot be represented in Objective-C

我想要最快的解决方法,因为无论如何我最终都不会使用任何这些标准的NSObject函数。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

实际上,不需要实现NSObject的方法。 为了能够从Objective-C类/协议继承或继承,您只需要从NSObject继承即可。这是为了确保您的Swift类也可以在Objective-C环境中使用。另外, Swift结构不能采用Objective-C协议,因为Obj-C中没有这样的类型

这应该有效

class MyClass: NSObject, OtherProtocol {
}