【问题标题】:Objc <-> Swift compatibility for swift generic functionObjc <-> Swift 通用函数的 Swift 兼容性
【发布时间】:2017-12-17 14:25:00
【问题描述】:

以下功能:

func popTo<ViewController>(viewController: ViewController.Type, animated: Bool) where ViewController: UIViewController

仅适用于 Swift。我需要在 objc 代码中使用这个方法。在重新考虑了一堆选项之后,我不确定如何使它与 objc 兼容。可能最简单的选择是创建另一个以某种方式将其暴露给 objc 的函数,但我不确定哪种解决方案最适合处理它。

【问题讨论】:

  • 您需要通用占位符吗?否则直接说@objc func popTo(viewController: UIViewController.Type, animated: Bool)
  • @Hamish 不幸的是,我确实需要这个,所以我不知道该怎么做。
  • 你是如何使用它的?你能告诉我们实现吗?
  • @Hamish 那是一条相当长的链:/ 通常在某些时候它会回到 swift 实现,但由于用 objc 编写的旧实现,它也会进入 objc。
  • 嗯,好的,但是可以显示通用占位符是如何使用的吗?不能直接使用viewController 元类型(在我上面的建议中)吗?

标签: ios objective-c swift


【解决方案1】:
func popTo<ViewController>(viewController: ViewController.Type, animated: Bool) where ViewController: UIViewController

等价于

func popTo(viewController: UIViewController, animated: Bool) 

它是“objc-able”

【讨论】:

  • 不,不一样。第一个传递类型,以便您例如。写 popTo(MyViewControllerSubclass) 而不是 popTo(myInstanceOfMyViewControllerSubclass) 在你的代码中。当您没有实例时,这一点非常重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2016-03-18
  • 1970-01-01
相关资源
最近更新 更多