无法用@objc标记方法,参数无法在Objective-C中表示

时间:2019-07-10 21:19:53

标签: swift

我想标记方法@objc,以在objc-runtime中检查此方法是否被覆盖。

::iii::  ; insert a date time stamp
send, ID%A_YYYY%.%A_MM%.%A_DD%.%A_Hour%.%A_Min%.%A_Sec%
path = <code for extracting path>
filename = <code for extracting filename>
return

但是出现此错误:

  

方法不能标记为@objc,因为参数1的类型不能在Objective-C中表示

P.S。我看到了以前关于SO的问题,但它们并没有帮助我

编辑:

也许可以在调用之前知道此方法是否被覆盖?该库的用户可以覆盖此方法。因此在lib内部,我可以做任何我想做的事。

class Animator<VC1: AnyObject, VC2: AnyObject>: NSObject  {
    @objc open func animation(vc1: VC1, vc2: VC2, container: UIView, duration: Double) {
        // .. 
    }
}

1 个答案:

答案 0 :(得分:0)

Swift泛型在Objective-C中无法表示。
这就是为什么出现此错误的原因,尽管AnyObject对Objective-C有效。

如果可以,请删除通用名称:

class Animator: NSObject {
    @objc open func animation(vc1: AnyObject, vc2: AnyObject, container: UIView, duration: Double) {
        // ...
    }
}