Swift — Require classes implementing protocol to be subclasses of a certain class

前端 未结 8 2037
臣服心动
臣服心动 2021-01-01 08:58

I\'m creating several NSView classes, all of which support a special operation, which we\'ll call transmogrify. At first glance, this seems like t

8条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-01 09:39

    There is a workaround by using associated types to enforce the subclass:

    protocol TransmogrifiableView {
        associatedtype View: NSView = Self
        func transmogrify()
    }
    
    class MyView: NSView, TransmogrifiableView { ... } // compiles
    class MyOtherClass: TransmogrifiableView { ... } // doesn't compile
    

提交回复
热议问题