Obj-C到Swift3的类返回方法

时间:2017-06-14 06:00:55

标签: objective-c swift swift3

所以我在Obj-C超类中有这个方法:

+ (Class<Executor>)executorClass

我需要在我的Swift3子类中覆盖它。我尝试了什么:

override class func executorClass() -> AnyClass // not match

override class func executorClass() -> Executor.Type // not match

override class func executorClass() -> AnyObject.Type // not match

override class func executorClass() -> Any.Type // obviously not match

在Swift2之前,以下代码有效:

override class func executorClass() -> AnyObject.Type

1 个答案:

答案 0 :(得分:0)

归功于@Harnish

Obj-C方法中的Class<Executor>不合法,但仍可编译。删除<Executor>解决编译问题。又名:

// Obj-C
+ (Class)executorClass

// Swift
override class func executorClass() -> AnyClass  // good

修改:归功于@Sulthan

+ (Class<Executor>)executorClass

如果Executor是协议,则上述代码完全合法。但在我的情况下,它是另一个类。所以,我猜,这是问题的根源。