我对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
函数。有什么想法吗?
答案 0 :(得分:2)
实际上,不需要实现NSObject的方法。 为了能够从Objective-C类/协议继承或继承,您只需要从NSObject继承即可。这是为了确保您的Swift类也可以在Objective-C环境中使用。另外, Swift结构不能采用Objective-C协议,因为Obj-C中没有这样的类型
这应该有效
class MyClass: NSObject, OtherProtocol {
}