Ios 不能将swift类应用于类型为X的目标C协议<;NSObject>;

Ios 不能将swift类应用于类型为X的目标C协议<;NSObject>;,ios,swift,Ios,Swift,我对斯威夫特很陌生,所以我可能会在这里说一些奇怪的话。抱歉 我在目标C中有以下(简化)协议: @protocol OtherProtocol <NSObject> @optional ... @end 当然,XCode会抱怨,因为我的类没有正确的方法 除了在OtherProtocol中定义的方法之外,我似乎还需要实现一系列NSObject方法。当XCode从NSObject添加缺少的方法存根时,有一个特别的问题: func `self`() -> Self { .

我对斯威夫特很陌生,所以我可能会在这里说一些奇怪的话。抱歉

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

@protocol OtherProtocol <NSObject>
@optional

...

@end
当然,XCode会抱怨,因为我的类没有正确的方法

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

func `self`() -> Self {
    ...
}
此方法的问题是
方法不能实现@objc需求,因为其结果类型不能在Objective-C中表示


我希望以最快的方式解决这个问题,因为无论如何我都不会使用那些标准的
NSObject
函数。有什么想法吗?

实际上,没有必要实现NSObject的方法。 为了能够从Objective-C类/协议子类化/继承,您只需要从NSObject继承。这是为了确保您的Swift类也可以在Objective-C环境中使用。而且,Swift结构体不能采用Objective-C协议,因为Obj-C中没有此类协议

这应该行得通

class MyClass: NSObject, OtherProtocol {
}

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

这应该行得通

class MyClass: NSObject, OtherProtocol {
}

最快的?继承
NSObject
classmyclass:NSObject,OtherProtocol
最快?继承
NSObject
classmyclass:NSObject,OtherProtocol
这肯定是正确的答案,尽管Objective-C实际上也有
struct
s。它们的功能还不够全面,不能采用协议或从其他对象继承,但它们确实如此exist@MichaelHuletObj-C没有自己的
struct
,它只能使用C
struct
s,而Swift
struct
s不能在Obj-C中表示。这就是我要说的。Obejctive-C就是C加上一些面向对象的特性。IIRC在NeXT首次设计时,是用C预处理器实现的。苹果在其API中广泛使用了这些
struct
s,但对于
CGRect
CGPoint
这肯定是正确的答案,尽管Objective-C实际上也有
struct
s。它们的功能还不够全面,不能采用协议或从其他对象继承,但它们确实如此exist@MichaelHuletObj-C没有自己的
struct
,它只能使用C
struct
s,而Swift
struct
s不能在Obj-C中表示。这就是我要说的。Obejctive-C就是C加上一些面向对象的特性。IIRC在NeXT首次设计时,是用C预处理器实现的。不过,苹果在其API中广泛使用了这些
struct
s,用于
CGRect
CGPoint